SetTimeout Internet Explorer

У меня есть следующий javascript в MSIE:

setTimeout(myFunction, 1000, param );

похоже, что он работает во всех браузерах, кроме Internet Explorer. Параметр просто не передается функции. глядя на отладчик, это undefined.

Ответ 1

param в Internet explorer указывает, является ли код в myFunction JScript, JavaScript или VBscript Смотрите также: MSDN. Он не ведет себя как другие браузеры.

Следующее будет работать:

setTimeout(function() {
    myFunction(param);
}, 1000);

Предыдущая строка точно не имитирует setTimeout в Firefox и т.д. Чтобы передать переменную, не затронутую более поздним обновлением переменной param, используйте:

setTimeout( (function(param) {
    return function() {
        myFunction(param);
    };
})(param) , 1000);

Ответ 2

Internet Explorer не позволяет передавать такие параметры. Вам нужно будет сделать это явно из функции обратного вызова:

setTimeout(function(){
    myFunction(param);
}, 1000);

Цитата из MDN:

Обратите внимание, что передача дополнительных параметров функции в первом синтаксисе не работает в Internet Explorer.

Ответ 4

Это не параметр. По-видимому, этот последний аргумент обозначает язык сценариев.

Вместо этого используйте анонимную функцию:

setTimeout(function() {
  myFunction(param);
}, 1000);

Ответ 5

Использовать анонимную функцию:

setTimeout(function() { myFunction(param) }, 1000);

Ответ 6

Как насчет этого:

setTimeout(function(){
    myFunction(param);
}, 1000);

Ответ 7

вы можете использовать закрытие:

setTimeout(function(){myFunction(param)}, 1000);