setTimeout(func,0)`和`setTimeout(func,1)`是否一样?

这里有一些简单的Javascript代码使用setTimeout

 function setTimeouts() { setTimeout(function() { console.log(2); }, 2); setTimeout(function() { console.log(1); }, 1); setTimeout(function() { console.log(0); }, 0); } for (var i = 0; i < 10; i++) { setTimeouts(); } 

当我在Chrome或Node.js上运行它时,结果是相似的:

 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 2 2 2 2 2 2 2 2 2 2 

你可以看到所有的任务超时01是在超时2之前,这是我的预期。

但是01是混合在一起的,好像他们有相同的超时时间。 我期望的是1之前的所有0

如何理解这一点?

实际上,setTimeout的第二个参数具有最小值限制。 对于Firefox来说,这个值是4ms。 如果通过的值小于最小值,则将使用最小值。

关于你的问题,我认为这篇文章是有帮助的: http : //javascript.info/tutorial/events-and-timing-depth