setTimeout Internet Explorer

cla*_*amp 22 javascript internet-explorer settimeout

我在MSIE中有以下javascript:

setTimeout(myFunction, 1000, param );
Run Code Online (Sandbox Code Playgroud)

这似乎适用于除Internet Explorer之外的所有浏览器.param只是没有转发到该函数.看看调试器,它是未定义的.

Rob*_*b W 37

param在Internet Explorer中指定代码myFunction是JScript,JavaScript还是VBscript.另请参阅:MSDN.它的行为与其他浏览器不同.

以下将有效:

setTimeout(function() {
    myFunction(param);
}, 1000);
Run Code Online (Sandbox Code Playgroud)

前一行setTimeout在Firefox等中并不完全模仿.要传递一个变量,不受以后更新param变量的影响,请使用:

setTimeout( (function(param) {
    return function() {
        myFunction(param);
    };
})(param) , 1000);
Run Code Online (Sandbox Code Playgroud)