2012-01-11 3 views
0

Это не похоже на правду, но именно так выглядит Firefox.Почему моя функция вызывается до истечения таймаута setTimeout()?

setTimeout(print(),5000); 
function print(){ 
    console.log(1); 
} 

До 5 секунд вверх, после нажатия на ссылку и до следующей страницы начинает оказывать, 1 выводится на консоль. Есть идеи? Благодаря!

Редактировать: переименовать, чтобы было очевидно, что в примере кода есть ошибка, а не поведение firefox.

+0

Для этого стоит 50000 миллисекунд 50 секунд, а не 5. – lonesomeday

+0

Возможный дубликат [Почему метод выполняется немедленно, когда я использую setTimeout?] (Http://stackoverflow.com/questions/7137401/why-is -The-метод, выполненный-сразу, когда-я-использование-SetTimeout) –

ответ

7

Нет, проблема в том, что вы выполняете функцию печати сразу. Удалите скобки, чтобы передать объект функции, а не выполнить его.

setTimeout(print,50000); 
4

Firefox будет вызывать print, когда он получает выражение, которое вызывает его, например, print().

Вы звоните print и передаете его возвращаемое значение (undefined) на номер setTimeout.

Оставьте (), чтобы передать функцию.

Смежные вопросы