setTimeout与没有延迟立即执行相同的function?

我正在查看一些Web应用程序中的现有代码。 我看到这个:

window.setTimeout(function () { ... })

这与刚刚执行function内容相同吗?

它不一定会立即运行,也不会将延迟明确地设置为0.原因是setTimeout从执行队列中删除函数,只有当JavaScript执行完当前执行队列后才会调用该函数。

 console.log(1); setTimeout(function() {console.log(2)}); console.log(3); console.log(4); console.log(5); //console logs 1,3,4,5,2 

有关更多详细信息,请参阅http://javascriptweblog.wordpress.com/2010/06/28/understanding-javascript-timers/

setTimeout使用的最小延迟(根据HTML5为4ms,Firefox 3.6为10ms)。 在Mozilla开发人员中心文档页面上有关于它的讨论。

您缺less毫秒参数…

 setTimeout(function() { /*something*/ }, 0); 

0将延迟设置为0,但实际上是让你的函数“跳过队列”的浏览器执行列表。 浏览器有很多事情要做,比如在页面上渲染对象,通过调用这个函数,只要浏览器有一些周期,你的函数就会运行。