深入之词法作用域和动态作用域
JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。
var value = 1;
function foo() {
console.log(value);
}
function bar() {
var value = 2;
foo();
}
bar();
// 结果是 1
原因也很简单,因为JavaScript采用的是词法作用域,函数的作用域基于函数创建的位置。
根据书写的位置,查找上面一层的代码,也就是 value 等于 1,所以结果会打印 1。