javascript中有个作用域的概念。
- 全局作用域
- 函数作用域

作用域取决于函数定义的地方,与函数执行无关。
function F1() {
var a = 100;
return function () {
console.log(a)
}
}
var f1 = F1();
var a = 200;
f1()
这段代码打印结果: 100; 我们这样来看,
F1定义的时候,作用域已经生成。

然后,把F1 赋值给 f1, 此时,f1 是一段函数,如下:
function() {
console.log(a)
}
复制代码
然后,定义了一个全局变量a,在全局环境去执行f1.
注意: 作用域取决于函数定义的地方,与函数执行无关。
此时f1执行,去找a的变量,F1的局部作用域去找。
他会找到a = 100; 而不是a=200;
作用域是分层的,内层作用域可以访问外层作用域的变量,反之则不可以