Показать сообщение отдельно
  #1 (permalink)  
Старый 08.01.2012, 12:34
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

Таймеры: "setTimeout" и "setInterval"
Вопрос по уроку "Таймеры: "setTimeout" и "setInterval".

Вот здесь автор пишет, что "по умолчанию, setTimeout не передаёт функции никаких аргументов". И приводит пример:
function sayHi(who) {
  alert("Привет, я " + who);
}
setTimeout(sayHi, 1000);  // Привет, я undefined

Все вроде правильно, не передает. Потому что ничего и не передавалось.

Потом он пишет такое: "Для того, чтобы аргументы передать, обёртывают вызов в анонимную функцию:"
function sayHi(who) {
  alert("Привет, я " + who);
}
 
setTimeout(function() { sayHi('Вася') }, 1000);  // Привет, я Вася

Да, так передает. Но он прекрасно передает и так:
function sayHi(who) {
  alert("Привет, я " + who);
}
 
setTimeout(sayHi("Вася"), 1000);   // Привет, я Вася

То есть очевидно, что по умолчанию setTimeout преспокойно может передавать функции аргументы.

Вопрос. Зачем автор пишет, что setTimeout не может? Или здесь есть какие особенные различия между 2м и 3м примером?

Последний раз редактировалось jsuse, 08.01.2012 в 13:16.
Ответить с цитированием