function f1(){
var n=999;
nAdd=function(){
n+=1
}
function f2(){
alert(n);
}
return f2;
}
var result1=f1();
var result2=f1();
result1(); // 999
nAdd();
result1(); // 999
result2(); //1000
为什么输出分别是999,999,1000而不是999,1000,1000
因为
n
不是全局变量,每次调用f1()
都会创建独立的n
;那么显然,第二次调用
var result2=f1();
之后,nAdd
里的n
就只对result2
负责了,于是result1()
仍然打印出来的是她自己作用域里的那个999