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

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,相当于有了延迟,就能区分出次序了。

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

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?