Javascript Firefox setTimeout(func,ms)向回调发送默认参数
我无法找到更多关于我遇到的这个默认参数的信息,希望有人能给出解释 在Firefox(本例中为3.6)中,如果调用以下代码:Javascript Firefox setTimeout(func,ms)向回调发送默认参数,javascript,firefox,settimeout,Javascript,Firefox,Settimeout,我无法找到更多关于我遇到的这个默认参数的信息,希望有人能给出解释 在Firefox(本例中为3.6)中,如果调用以下代码: function test(someVar) { console.log('test ' + someVar); } setTimeout(test, 0); 它将向控制台记录一个“随机”数字。我知道你可以像这样在Firefox中传递参数: setTimeout(test, 0, param1, param2); 但Firefox似乎在自动发送一个值。我想是超过要
function test(someVar) {
console.log('test ' + someVar);
}
setTimeout(test, 0);
它将向控制台记录一个“随机”数字。我知道你可以像这样在Firefox中传递参数:
setTimeout(test, 0, param1, param2);
但Firefox似乎在自动发送一个值。我想是超过要求的通话时间的毫秒数,但我不能确定。(例如:now()+0ms==now(),但由于它现在无法调用,因此它将等待执行队列并返回超过该时间的毫秒数?)如果我将500毫秒作为超时,它通常返回0,除非后面有一个长时间运行的脚本
我还知道Firefox会将超时请求限制为10ms,输入0会使其默认为10ms。如果该值为“延迟值”(即:所用时间比您要求的时间长126ms),则该值是基于我输入的值(0)还是钳制最小值
下面的一个答案表明这是计时器手柄。以下代码证明(?): 这将返回两个不同的值
当然,它会在IE中返回
未定义的,所以我并没有编写预期的代码,但我很好奇
(这实际上导致了我正在处理的一些代码中的一个bug,这些代码依赖于调用函数的可选参数。在IE中工作,而不是FF。)来自MDC
Gecko将一个额外的参数传递给
回调例程,指示
中超时的“延迟”
毫秒
因为“实际”延迟可能比setTimeout
调用中指定的延迟长,如果函数恰好在指定的延迟后调用,“延迟”将为零,否则为非零。您正确地认为它是偏移量。它通常为零(这意味着它在应该的时候被调用),但是如果JS引擎被备份,它会更高,甚至可能是负数
参考:
(见黄色部分)投票支持你。谢谢你的链接,但我会投票给Satyajit作为回答者,因为他们是第一个。(对不起!)
function test(someVar) {
console.log('test ' + someVar);
}
console.log('Timer ' + setTimeout(test, 0));