Скажем, у меня есть простая функция, которая предупреждает сообщение:Почему это закрытие работает?
function callMessage(msg){
alert(msg);
}
Теперь, когда я называю это как так, он не работает. Выдает ошибку «эй не определен»
function sayHi(){
var hey = "hi there"
setTimeout("callMessage(hey)", 1000);
}
sayHi();
Но когда я называю это внутри анонимной функции она работает:
function sayHi(){
var hey = "hi there"
setTimeout(function(){callMessage(hey);}, 1000);
}
sayHi();
Почему «эй» переменная видна только когда я положил его внутри анонимная функция?
я бы тоже попробуй это; 'setTimeout (" var hey = 'hi there'; callMessage (hey) ", 1000);' – mindandmedia
Если бы я был вами, я бы прочитал что-то вроде: http://www.digital-web.com/articles/scope_in_javascript/ –