【发布时间】:2017-11-24 12:37:04
【问题描述】:
有人可以解释为什么控制台注销 10、10、10 而不是 9、9、9 吗? 当它通过for循环时,它不应该在9点停止吗?
var foo = [];
for (var i = 0; i < 10; i++) {
foo[i] = function() {
return i;
};
};
console.log(foo[0]());
console.log(foo[1]());
console.log(foo[2]());
【问题讨论】:
-
当 foo 被执行时,
i已经达到 10,courteyi++ -
i++在每个循环结束时进行评估。因此,必须为 10 才能使下一个循环不执行(因为条件是i < 10)。 -
您的主要困惑似乎不是闭包,而是
for循环的工作方式。 -
@JLRishe 确实......然而,OP 接受了一个没有解释问题的答案!
标签: javascript function loops for-loop closures