Say mam prostą funkcję, która ostrzega wiadomość:Dlaczego to zamknięcie działa?
function callMessage(msg){
alert(msg);
}
Teraz, kiedy nazywają to jak tak, to nie działa. Zgłasza błąd „hej nie jest zdefiniowana”
function sayHi(){
var hey = "hi there"
setTimeout("callMessage(hey)", 1000);
}
sayHi();
Ale kiedy ja to nazywam wewnątrz anonimowej funkcji to działa:
function sayHi(){
var hey = "hi there"
setTimeout(function(){callMessage(hey);}, 1000);
}
sayHi();
Dlaczego „hej” zmienna widoczna tylko wtedy, gdy I umieścić go wewnątrz anonimowa funkcja?
Chciałbym również Spróbuj tego; 'setTimeout (" var hey = 'hi there'; callMessage (hej) ", 1000);' – mindandmedia
Gdybym był tobą, przeczytałbym coś takiego - http://www.digital-web.com/articles/scope_in_javascript/ –