最近在 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);
chrome 版本
最近在 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);
chrome 版本
13 回答12.7k 阅读
8 回答2.4k 阅读
2 回答5k 阅读✓ 已解决
7 回答1.8k 阅读
3 回答2.2k 阅读✓ 已解决
5 回答747 阅读
3 回答1.1k 阅读✓ 已解决
Chrome, Node
第二个参数值如果不是[1, 2 ** 31 - 1]
范围内的有效值,会默认设置为1
。node/timer.js其实不同浏览器甚至有不同的实现。
你开
Firefox
试试结果还会不一样(会打印 0,1,2