var n = 1;
function foo() {
return n
}
function Bar() {
this.n = 2;
this.b = foo;
}
var obj = new Bar();
obj.b(); // 1 or 2 ?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
1.
函数在声明的时候其上下文执行环境就已经确定了,与调用语句的位置无关。
return n直接找到第一行的var n = 1这里
这里的
n只能在函数执行时候的上下文里找,所以是1foo() 是一个闭包
上面的代码可以写成这样