function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999 nAdd();
result(); // 1000在這段代碼中,result()它一共運行了兩次,第一次的值是999,第二次的值是1000。這證明了,函數f1中的局部變量n一直保存在內存中,并沒有在f1調用后被自動清除。為什么會這樣呢?尤其是第二次,為何輸出的不是999呢?nAdd=function(){n+=1}又起到了什么作用呢?
javascript關于閉包的面試題
MYYA
2018-10-11 14:15:00