setTimeout-的执行时机

本文通过实验探讨了 JavaScript 中 setTimeout 函数在设置延迟时间为0时的行为表现,并分析了这种情况下代码的实际执行顺序。

今天碰到个很有意思id问题。
setTimeout,第二个参数是0的时候会发生什么

一般认为如果是0的话应该立即执行的。但是很遗憾我这个回答是错误的。
本着不懂就问的精神特意去百度了下。发现介绍的都模模糊糊,或者太过深入。


我做了个试验:

console.log(1);
setTimeout(function(){console.log(2)},0);
console.log(3)

输出的结果:

1
3
141
2

我理解的原因:
当浏览器执行js 时,遇到setTimeout时,会将其挂起,等待剩余js生完毕后再来执行setTimeout内的代码,不管其第二个参数值为多少,都是如此;
第三个输出的141 呢。其实是这个setTimeout的id 用于 使用 clearTimeout 来清除 setTimeout 的。
测试时,还会发生一种情况输出的结果是

1
3
undefined
2

按我的的理解呢,也需是延时为0 也就不需要id 来清除了...(完全是瞎猜的!!!)

转载于:https://blog.51cto.com/9357435/2073221

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值