根据W3Schools超时是必需参数。但是可以在没有超时参数的情况下调用它。
function eventHandler(e) {
var t = setTimeout(function () {
//clearTimeout(t);
alert('Called');
});
}
答案 0 :(得分:21)
5)让超时成为第二个方法参数,如果省略参数则为零。
答案 1 :(得分:10)
如果您不想设置超时,则只需传递0
setTimeout(function() {
...
}, 0);
或者你可以省略延迟参数并假设0
,但是,为了健壮性(和一般可读性),最好在那里传递某些东西。
注意 - 此不保证您的代码将立即运行。只要UI线程可用于处理它,它就会将您的任务排队。
答案 2 :(得分:8)
你为什么不亲自检查一下? 文档总是受欢迎的,但是你无法击败现实世界的例子:
var startTime = Date.now();
setTimeout(function () {
var endTime = Date.now();
alert("timeOut was: " + (endTime - startTime) + "ms");
});
JSFiddle:http://jsfiddle.net/losnir/PbJBA/
通过播放不同的超时值来进行操作。
不传递超时参数实际上与传递0
相同。
但是,正如您所看到的,超时永远不会是0
,这是因为您的回调函数将被放入队列中,并尽快执行(给定您请求的超时值)。
平均大约需要5毫秒,如果您的UI线程正在执行一些密集型任务,或者您的CPU忙碌 - 它可以像高几百毫秒一样,非常糟糕!< / p>
答案 3 :(得分:4)
According to the HTML5 specification:
当上述方法要获得超时时,它们必须运行 以下步骤:
- 让超时成为方法的第二个参数,如果省略参数,则为零。
- 将ToString()抽象操作应用于超时,并将超时作为结果。 [ECMA262]
- 将ToNumber()抽象操作应用于超时,并将超时作为结果。 [ECMA262]
- 如果超时是无穷大值,非数字(NaN)值或负数,则超时为零。
- 舍入超时到最接近的整数,并将超时作为结果。
- 返回超时。
请注意,指定的超时零可能实际上不会延迟零毫秒。有关详细信息,请参阅the specification of setTimeout
。
答案 4 :(得分:1)
是的,你可以在没有提供时间的情况下完成所有这些但是没有用
setTimeout(
function() {
alert("asdf");
})
下次打勾时会触发
是的但它会使该函数异步,或稍后排队
setTimeout(function() { alert("msg1");
})
alert("msg2");
在上面的代码中首先显示msg2。