【发布时间】:2010-12-13 04:17:34
【问题描述】:
考虑这样的循环:
for(var it = 0; it < 2; it++)
{
setTimeout(function() {
alert(it);
}, 1);
}
输出是:
=> 2
=> 2
我希望它是:0、1。我看到了两种修复它的方法:
解决方案 #1。
这是基于我们可以将数据传递给 setTimeout 的事实。
for(var it = 0; it < 2; it++)
{
setTimeout(function(data) {
alert(data);
}, 1, it);
}
解决方案 #2。
function foo(data)
{
setTimeout(function() {
alert(data);
}, 1);
}
for(var it = 0; it < 2; it++)
{
foo(it);
}
还有其他选择吗?
【问题讨论】:
标签: javascript loops closures scope