猿问

js 异步的问题,settimeout的问题

var i = 0, timer, j = 0;while(i++ < 5) {
  timer = window.setTimeout(function(){
    j++;
    alert(j);
  }, 1000);
}
clearTimeout(timer);

输出的是1,2,3,4
5怎么没输出?还有为什么是这样输出的?他不是每次都赋值覆盖了吗?怎么还会执行?顺序是什么?clearTimeout这语句是在什么时候执行的
如果稍微改下
var i = 0, timer, j = 0;
while(i++ < 5) {
  timer = window.setTimeout(function(){
    j++;
    alert(j);
  }, i*1000);
}
clearTimeout(timer);
这样就是每隔一秒输出嘛,如果上面的问题解决了,那么没毛病
再继续改

    var i = 0, timer, j = 0;

    while(i++ < 5) {

      timer = window.setTimeout(function(){

        j++;

        alert(j);

      }, j*1000);

    }


clearTimeout(timer);

这个时候,他是同时输出的,为什么跟上面用i的不一样?




幕布斯6054654
浏览 570回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答