【发布时间】:2014-08-17 19:08:54
【问题描述】:
给出以下代码:
var a = [ ], i = 0, j = 0;
for (i = 0; i < 5; i += 1) {
(function(c) {
a.push(function () {
console.log(c); });
})(i);
};
for (j = 0; j < 5; j += 1) { a[j](); }
为什么i 总是变大1 而不是保持5?是不是已经通过了for循环,所以给匿名函数的i参数应该是5?
【问题讨论】:
-
因为你在每次迭代中创建一个新的范围,通过调用一个函数来捕获
i的当前值。
标签: javascript for-loop closures