来源:为什么这段代码在Chrome环境中不符合事件循环机制? - 知乎

console.log(1);
 
setTimeout(() => {
  console.log(2);
}, 0);
 
const intervalId = setInterval(() => {
  console.log(3);
}, 0);
 
 
setTimeout(() => {
  console.log(10);
  clearInterval(intervalId);
}, 0);

以上代码在Chrome环境中输出

1
2
10

但是在NodeJS环境中输出

1
2
3
10

原因:
在目前的Chrome中 setInterval 的最小延迟时间不是0,而是1,即便你写了0,Chrome 也会改成1,而 setTimeout 没有这个限制,所以 setTimeout 回调会先执行,也就执行了 clearInterval,所以不会打印3
紫云飞的回答 https://www.zhihu.com/question/619560968/answer/3188678764