試問 如果 nAdd=n 是不是就可以利用全局變量提出局部變量n了啊?
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}可以調(diào)用里面的n呢?難道是因?yàn)閚Add是由一個(gè)函數(shù)調(diào)用的 那么如果nAdd在f1的外面也可以調(diào)用嗎?WHY??求大神
2017-03-12
不行,我還是厚著臉皮再來一次。
首先,nAdd是全局變量,用nAdd = n的方式是可以吧局部變量暴露出去的,如果nAdd是簡單的基本類型,n的每一次變化都需要通過nAdd = n的方式賦值。
第二個(gè),關(guān)于n的作用域問題,這里nAdd的作用,形成閉包,局部變量n并不會(huì)在執(zhí)行完result()后銷毀而是繼續(xù)保存在內(nèi)存中。