结论:
1. 函数不论在哪执行,它的上级上下文,一定是它的作用域,而作用域是和在哪创建的有关系。
2. 所以无论函数在哪执行,遇到变量不是自己私有的,都会按照作用域链查找其上级上下文中是否有,作用域链只和在哪创建的有关系,和在哪执行是没有关系的。
求输出的答案
var i = 10;
function A() {
var i = 10;
function x() {
console.log(i);
}
return x;
}
var y = A();
y(); --> 10
function B() {
var i = 20;
y(); --> 10
}
B();