作用域
-
作用域是指程序源代码中定义变量的区域。
-
作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。
-
JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。
栗子
var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f();
}
checkscope();
最后输出结果是"local scope",因为f()内读取的scope为函数checkscope()内部声明的变量scope,这个scope的作用域是checkscope()函数内部。
作用域链
查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。这样由多个执行上下文的变量对象构成的链表就叫做作用域链。