为什么此功能仅发送10次号码10次。我希望它发送1 ... 2 ... 3 ... 4 ... 5等等 而是它的表现 10 .... 10 .... 10 ... 10 ......我不确定为什么会这样。 如何创建一个返回不同值的循环?
for (i = 0; i < locations.length; i++) {
setTimeout(function() { alert("test"+i.toString()) ; }, 100);
}
如何创建一个返回不同值的循环?
答案 0 :(得分:2)
您可以通过使用闭包(将i
传递回立即调用的函数表达式(IIFE))来完成此操作。这将保持i
:
for (var i = 0; i < 10; i++) {
(function(i) {
setTimeout(function() {
console.log("test" + i);
}, 100);
})(i);
}
&#13;
使用i
以相同的方式增加超时。确保用IIFE包装整个超时调用:
for (var i = 0; i < 10; i++) {
(function(i) {
setTimeout(function() {
console.log("test" + i);
}, i * 100);
})(i);
}
&#13;