JavaScript进阶(二)— 词法作用域
作用域
作用域是指 程序源代码中,定义变量的区域。
作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。
词法作用域
在 JavaScript
中,采用的是 词法作用域, 即静态作用域。
词法作用域规定了,函数的作用域是在 函数定义的时候就确定 了。
示例
var a = 1
function foo() {
console.log(a)
}
function bar() {
var a = 2
foo()
}
bar()
这个示例的执行结果为 1
。
在这个例子中, 由于 函数foo
的作用域在 定义的时候就确定了,即使在 函数bar
中也有相同的变量名a
的定义, 但是由于两个函数在定义时,作用域是相互独立的,函数foo
在其作用域查找局部变量a
,没有找到, 继续从它书写位置往上查找上一层的代码,所以输出的结果为 1
。