js闭包问题?这段代码如何理解呢?为什么第二次调用result()变成1000了?
javascript闭包相关问题?为什么第二次调用result()变成1000了?
第二次调用result的时候还是会走var n=999;
那输出的值为什么不是999?
function f1(){ var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
nAdd();
result(); // 1000
回答
你运行了nAdd()这个函数,执行了n+=1,所以结果打印出1000
第二次调用result的时候还是会走var n=999;
var n=999 是不会执行第二次的.
result是f2函数,第二次调不会执行var n=999
在这个位置看下result变成了什么。
result=f1();//这里已经给result重新赋值,值为f1()返回的结果,就是函数f2; // 所有这时候result = function(){alert(n)};
//后面再怎么执行result,也不会重新var n;
以上是 js闭包问题?这段代码如何理解呢?为什么第二次调用result()变成1000了? 的全部内容, 来源链接: utcz.com/a/24954.html