function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
nAdd();
result(); // 1000
如果不行的话?为何nAdd=function(){n+=1}可以调用里面的n呢?难道是因为nAdd是由一个函数调用的 那么如果nAdd在f1的外面也可以调用吗?WHY??求大神
不行,我还是厚着脸皮再来一次。
首先,nAdd是全局变量,用nAdd = n的方式是可以吧局部变量暴露出去的,如果nAdd是简单的基本类型,n的每一次变化都需要通过nAdd = n的方式赋值。
第二个,关于n的作用域问题,这里nAdd的作用,形成闭包,局部变量n并不会在执行完result()后销毁而是继续保存在内存中。