Javascript,setInterval在while循环之后开始?如何使它在while循环内部启动

Javascript, setInterval starts after while loop? how to make it start inside while loop?

本文关键字:循环 while 何使它 启动 内部 之后 setInterval Javascript 开始      更新时间:2023-09-26

我有一段javascript:

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

它提醒了10号而不是1号到10号。我预计setInterval会提醒1到10号,并从1到10保持警惕。

神奇的词是闭包和作用域:

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

简而言之,while循环在i的值可以被提醒之前完成
也不是顺序,或缺乏小提琴:

FIDDLE

这只是猜测,但这是您想要的吗?

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

实际情况是您要求计算机每毫秒运行一次嵌套的内部函数。你要求连续做十次,所以到最后,计算机应该每秒发送一万次警报。我很惊讶它没有消耗所有的CPU和内存,并导致致命的错误。

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

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