Quelqu'un peut-il expliquer pourquoi l'alerte renvoie "undefined" au lieu de "hello"?javascript window.onload scope
window.onload = function() {
var a = 'hello';
alert(window.a);
}
Quelqu'un peut-il expliquer pourquoi l'alerte renvoie "undefined" au lieu de "hello"?javascript window.onload scope
window.onload = function() {
var a = 'hello';
alert(window.a);
}
"Variables nommées sont définies avec l'instruction var.Avec l'intérieur d'une fonction, var définit les variables avec fonction-scope." - (source)
Pour être accessible au niveau mondial, et en particulier pour faire a
un membre de l'objet window
, modifier votre code de cette façon:
var a; // defined in the global scope
window.onload = function() {
a = 'hello'; // initialized
alert(window.a);
}
Ou ainsi:
var b = 'world'; //defined and initialized in the global scope
window.onload = function() {
alert(window.b);
}
La variable 'a' ne fait pas partie de la fenêtre dans votre contexte.
a est défini sur la fonction anonyme que vous avez attribuée à onload.
vous pouvez ajouter un en tant que membre de la fenêtre si vous voulez:
window.onload = function() {
window.a = 'hello';
alert(window.a);
}
mais je vous suggère de refuser de le faire.