setTimeout中的额外参数:最早的IE版本支持

Extra paramater(s) in setTimeout: earliest IE version support?

本文关键字:IE 版本 支持 参数 setTimeout      更新时间:2023-09-26

为了避免隐含的eval和不必要的代码,我想使用:
setTimeout(alert, 1000, "Hello");

而不是:
setTimeout('alert("Hello")', 1000);
或:

setTimeout(function(){
    alert("Hello");
},
1000);

现在我已经读到IE从IE8和更高版本支持这一点,如果我从模拟器(在IE11中)运行它,似乎即使是IE9也不支持它。

有人能告诉我,对于IE8和IE9的实际版本,这是否属实吗?

我在IE9和IE8中都失败了:http://jsbin.com/nuranote/1在IE10和IE11中为我工作。

有趣的是,他们在setTimeout的IE开发中心页面上没有提到这种支持。。。

现在,如果alert只是一个例子,但您不打算使用主机提供的功能(这些功能并不总是由Function.prototype支持)来实现这一点,那么您可以这样做:

// Won't work with `alert` on IE9 but does with real JavaScript functions.
// Even `alert` works IE10+ (they finally got it about Function.prototype)
setTimeout(yourFunction.bind(null, "Hello"), 1000);

这仍然创建了一个函数,但以(理论上)稍微优化的方式。(你必须为IE8和更早的版本,可能还有其他一些旧的浏览器填补这个漏洞。)