1

这个 SO 答案setTimeout使用四个参数进行调用。

 setTimeout(self.process1, 0, self, u);

这让我很困惑。我看到的文档setTimeout只使用了两个参数,而不是四个。

最后两个参数有什么作用?

4

2 回答 2

3

引用MDN 上的文档

句法

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);

请注意,在第一种语法中将附加参数传递给函数在 Internet Explorer 中不起作用。

于 2012-06-29T17:40:06.860 回答
2

这个函数有两个签名

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
var timeoutID = window.setTimeout(code, delay);

请注意,在第一种语法中将附加参数传递给函数在 Internet Explorer 中不起作用。

在MDN中找到了关于这些额外参数的用途的注释:

在 Gecko 13 (Firefox 13.0 / Thunderbird 13.0) 之前,Gecko 向回调例程传递了一个额外的参数,以毫秒为单位指示超时的“实际延迟”。不再传递此非标准参数。

并非所有浏览器都支持第一个签名(具有两个以上的参数),因此我个人的建议是避免使用它。

于 2012-06-29T17:39:10.653 回答