setTimeout 之谜,求解!!!

最近在 MDN 看到 setTimeout 最小延时 >=4ms , 想试一下在延时为(4、3、2、1、0) 和延时分别为(0、1、2、3、4)的时候,执行顺序是否一致

下面代码执行结果为什么不是 2 1 0 或者为什么不是 0 1 2

setTimeout(()=>{console.log(2)},2);
setTimeout(()=>{console.log(1)},1);
setTimeout(()=>{console.log(0)},0);

image.png

chrome 版本

image.png

阅读 1.4k
1 个回答

Chrome, Node 第二个参数值如果不是 [1, 2 ** 31 - 1] 范围内的有效值,会默认设置为 1node/timer.js
其实不同浏览器甚至有不同的实现。
你开 Firefox 试试结果还会不一样(会打印 0,1,2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏