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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐