2010-05-04 3 views
2

Может кто-нибудь объяснить, почему предупреждение возвращает «неопределенный» вместо «привет»?javascript window.onload scope

window.onload = function() { 
    var a = 'hello'; 
    alert(window.a); 
} 

ответ

5

«Именованные переменные определяются выражением var. При использовании внутри функции var определяет переменные с функцией-scope». - (source)

Чтобы быть доступны во всем мире, и, в частности, чтобы a являющемуся членом window объекта, изменять свой код таким образом:

var a; // defined in the global scope 
window.onload = function() { 
    a = 'hello'; // initialized 
    alert(window.a); 
} 

Или таким образом:

var b = 'world'; //defined and initialized in the global scope 
window.onload = function() { 
    alert(window.b); 
} 
5

переменная 'a' не является частью окна в вашем контексте.

a относится к анонимной функции, которую вы назначили для загрузки.

можно добавить в качестве члена окна, если вы хотите:

window.onload = function() { 
    window.a = 'hello'; 
    alert(window.a); 
} 

, но я бы предложил не делать этого.

Смежные вопросы