作用域是指在程序中定义变量的区域,它确定了变量的可见性和生命周期。JavaScript采用了词法作用域,也被称为静态作用域,这意味着变量的作用域是在写代码时确定的,而不是在运行时确定的。
预解析是指在代码执行之前,JavaScript引擎会对代码进行解析和处理的过程。在预解析阶段,JavaScript会提前声明(但未赋值)所有的变量,并将函数声明提升到作用域的顶部。
下面我们通过一些示例代码来详细解析JavaScript的作用域和预解析。
示例一:
var x = 10;
function foo() {
var y = 20