2010-05-04 5 views
2

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); 
} 

Répondre

5

"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); 
} 
5

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.