JavaScript Window对象的setTimeout()方法中的默认超时是多少?

Yur*_*pka 17 javascript

根据W3Schools,超时是必需参数.但是可以在没有超时参数的情况下调用它.

function eventHandler(e) {
    var t = setTimeout(function () {
        //clearTimeout(t);
        alert('Called');
    });
}
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 27

HTML5 Timer规范说:

5)让超时成为第二个方法参数,如果省略参数则为零.


Jam*_*mes 10

如果您不想设置超时,则只需传递 0

setTimeout(function() {
    ...
}, 0);
Run Code Online (Sandbox Code Playgroud)

或者,您可以省略延迟参数0,但是,为了获得稳健性(以及一般可读性),最好在其中传递一些内容.

注意 - 这并不能保证您的代码会立即运行.只要UI线程可用于处理它,它就会将您的任务排队.


los*_*nir 8

你为什么不亲自检查一下?文档总是受欢迎的,但是你无法击败现实世界的例子:

var startTime = Date.now();
setTimeout(function () {
    var endTime = Date.now();
    alert("timeOut was: " + (endTime - startTime) + "ms");
});
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http://jsfiddle.net/losnir/PbJBA/
通过播放不同的超时值来实现.

不传递超时参数几乎与传递一个0.但是,正如您所看到的,超时永远不会0,因为您的回调函数将被放入队列中,并尽快执行(给定您请求的超时值).

它平均大约需要5毫秒,如果你的UI线程正在执行一些密集的任务,或者你的CPU很忙 - 它可能会高达几百毫秒,非常糟糕!