请你试着解释一下,当第二次调用函数i
时,变量a
没有重新初始化为零值,它是如何工作的。谢谢
var a = (function () {
var i = 0;
return function () {return i += 1;}
})();
a();
a();
答案 0 :(得分:2)
a
的值不是在i
语句中声明var
的函数。相反,a
是在a
初始化期间调用该函数返回的函数。因此,a
是函数
function() { return i += 1; }
该函数中的i
是指封闭匿名函数中的i
。它本质上是一个持久值,a
函数可以在每次调用时引用(和修改)。