0

我有一段javascript:

<script>
  var i=1;
  while(i<10){
    setInterval(function(){
      alert(i);
    },1);
    i++;
  }
</script>

它警告数字 10 而不是数字 1 到 10。我希望setInterval警告数字 1 到 10 并保持从 1 到 10 的警报。

4

3 回答 3

1

神奇的词是闭包和范围:

<script>
   var i=1;
   while(i<10){
      (function(j) {
          setTimeout(function(){
              alert(j);
          },1);
      })(i);

      i++;
   }
</script>

简而言之,while 循环在 的值i被提醒之前结束。
也不是小提琴中的顺序或缺乏顺序:

小提琴

于 2013-08-17T23:58:29.590 回答
0

发生的事情是您要求计算机每毫秒运行一次嵌套内部函数。而且您要求连续执行十次,因此到最后,计算机应该每秒发送一万次警报。我很惊讶它不会消耗所有 CPU 并消耗所有内存并导致致命错误。

这将一直持续到您调用clearInterval(),或直到窗口关闭。

http://www.w3schools.com/jsref/met_win_setinterval.asp

于 2013-08-17T23:58:18.630 回答
0

这是一个猜测,但这是你想要的吗?

setInterval(function(){
  var i=1;
  while(i<=10){
    alert(i);
    i++;
  }
 },1);
于 2013-08-18T17:53:53.600 回答