gpt4 book ai didi

javascript - Firefox setTimeout(func, ms) 发送默认参数给回调

转载 作者:行者123 更新时间:2023-12-01 22:49:20 24 4
gpt4 key购买 nike

我无法找到关于我遇到的这个默认参数的更多信息,希望有人能指出一个解释。

在 Firefox(本例中为 3.6)中,如果调用以下代码:

function test(someVar) {
console.log('test ' + someVar);
}
setTimeout(test, 0);

它会将一个“随机”数字记录到控制台。我知道您可以像这样在 Firefox 中传递参数:

setTimeout(test, 0, param1, param2);

但是 Firefox 似乎自动发送了一个值。我认为它是超过请求的调用时间的毫秒数,但我不能确定。 (例如:now() + 0ms == now(),但由于它现在不能调用,它会等待执行队列并返回超过该时间的毫秒数?)如果我将 500 毫秒设置为超时,它通常会返回0 除非我背后有一个长时间运行的脚本。

我也知道 Firefox 会将超时请求限制为 10 毫秒,输入 0 将使其默认为 10 毫秒。如果此值是“延迟值”(即:我们比您请求的时间长 126 毫秒)是基于我输入的值 (0) 还是限制的最小值?


下面的一个答案表明这是计时器句柄。下面的代码反驳了那个(?):

function test(someVar) {
console.log('test ' + someVar);
}
console.log('Timer ' + setTimeout(test, 0));

这将返回两个不同的值。


当然,它会在 IE 中返回 undefined,所以我没有编写期望它的代码,但我很好奇。

(这实际上导致了我正在处理的一些代码中的错误,这些代码依赖于调用函数的可选参数。在 IE 中工作,而不是 FF。)

最佳答案

来自 MDC

Gecko passes an extra parameter to the callback routine, indicating the "lateness" of the timeout in milliseconds.

因为“实际”延迟可能长于 setTimeout 调用中指定的延迟,如果恰好在指定的延迟之后调用函数,则“迟到”将为零,否则为非零。

关于javascript - Firefox setTimeout(func, ms) 发送默认参数给回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com