javascript
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}又起到了什么作用呢?
伊谢尔伦2017-04-10 15:23:29
nAdd 他相当于一个全局变量,因为在f1内,只要f1执行后,nAdd才能依附于window上,f1()执行后,nAdd只要执行n就会加1,执行第二次是,因为已经加一,所以result会返回1000, 这个主要考察,闭包和作用域