变量的JS闭包值

时间:2015-11-20 21:56:28

标签: javascript variables closures

请你试着解释一下,当第二次调用函数i时,变量a没有重新初始化为零值,它是如何工作的。谢谢

var a = (function () {
    var i = 0;
    return function () {return i += 1;}
})();

a();
a();

1 个答案:

答案 0 :(得分:2)

a的值不是在i语句中声明var的函数。相反,a是在a初始化期间调用该函数返回的函数。因此,a是函数

function() { return i += 1; }

该函数中的i是指封闭匿名函数中的i。它本质上是一个持久值,a函数可以在每次调用时引用(和修改)。