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
Run Code Online (Sandbox Code Playgroud)
我正在尝试学习JavaScript闭包,但上面的代码让我感到困惑.当第一次result()被叫时,它是999.这对我来说没问题.
之后nAdd()被调用,result2()显示1000我认为这是由于功能result2()和作用result()是等于功能f1().
但为什么最后一次result()显示999而不是1000呢?