Javascript循环显示相同的值10次

时间:2017-01-16 19:43:53

标签: javascript loops

为什么此功能仅发送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);
                                                                              }

如何创建一个返回不同值的循环?

1 个答案:

答案 0 :(得分:2)

您可以通过使用闭包(将i传递回立即调用的函数表达式(IIFE))来完成此操作。这将保持i

的值

&#13;
&#13;
for (var i = 0; i < 10; i++) {
  (function(i) {
    setTimeout(function() {
      console.log("test" + i);
    }, 100);
  })(i);
}
&#13;
&#13;
&#13;

使用i以相同的方式增加超时。确保用IIFE包装整个超时调用:

&#13;
&#13;
for (var i = 0; i < 10; i++) {
  (function(i) {
    setTimeout(function() {
      console.log("test" + i);
    }, i * 100);
  })(i);
}
&#13;
&#13;
&#13;