我正在阅读以下主题JavaScript 闭包如何工作?并找到了这段代码:
function foo(x) {
var tmp = 3;
return function (y) {
alert(x + y + tmp);
x.memb = x.memb ? x.memb + 1 : 1;
alert(x.memb);
}
}
var age = new Number(2);
var bar = foo(age); // bar is now a closure referencing age.
bar(10);
作者评论说:
正如预期的那样,每次调用
bar(10)
都会增加x.memb
. 可能出乎意料的是,这x
只是指代与年龄变量相同的对象!在给酒吧打了几个电话后,age.memb
将2
!
我很困惑为什么它总是会返回 2。你能解释一下它是怎么来的 2 总是吗?