就爱瞎逛 2019-09-17 12:49 采纳率: 83.3%
浏览 543
已采纳

javascript中的setTimeout方法在不同时间间隔会产生不同的结果?

for(let i=0;i<3;++i){
            setTimeout(function(){
                alert(i);
            },1000);
        }//这个会输出0,2,1

for(let i=0;i<3;++i){
            setTimeout(function(){
                alert(i);
            },100);
        }//这个会输出0,1,2

 for(let i=0;i<3;i++){
            setTimeout(function(){
                alert(i);
            },1000);
        }//这个会输出0,1,2

不是很懂①那里为什么会输出0,2,1。2怎么跑去1前面了?

感谢大佬们在百忙中解答我的疑问!!

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-09-17 12:53
    关注

    这很正常,因为你同时创建了3个timerout,所以到达时刻几乎相同,而定时精确性不高,就可能出现创建次序和触发次序不同的情况。
    加上alert,相当于有了延迟,就能区分出次序了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?