function f1(){
var n=999;
nAdd=function(){n+=1;};
function f2(){
alert(n);
}
return f2;
}
var result = f1();
var result2 = f1();
result(); // 999
nAdd();
result2(); // 1000
result2(); // 1000
result(); // 999
我正在尝试学习 JavaScript 闭包,但上面的代码让我感到困惑。当第一次result()
被调用时,它是 999。这对我来说没关系。
nAdd()
调用后,result2()
显示 1000。我认为这是由于 functionresult2()
和 functionresult()
等于 function f1()
。
但是为什么最后result()
显示的是 999 而不是 1000?