1

Насколько я знаю следующее объявление не будет добавлять любое значение переменной aa:Почему undefined var не добавлен в объект окна JavaScript?

var aa = undefined; 

function a() { 
    var aa; 
    console.log(aa); // here aa is still undefined 
    if(!aa) { 
     aa = 11; // should add to the globle scope (window Object) 
     bb = 12; // should add to the globle scope (window Object) 
    } 
    console.log(aa); 
    console.log(aa); // should be 11 
    console.log(bb); // should be 12 
} 

Теперь, если я хочу использовать получить доступ к ВАРУ aa и bb, я могу получить доступ только bb не aa. Мой вопрос: почему aa не может быть доступен извне, потому что в объявлении я не присвоил ему никакого значения, и он все еще не определен?

спасибо.

+3

вы переопределенную аа быть в области видимости функции, и так как вы Ждут» t назначить значение, оно присвоено undefined –

+0

Вы обновляете переменную aa в своей функции –

+0

@JonathandeM .: То есть вы имеете в виду «undefined» - это значение, которое присваивается переменной? –

ответ

1

Посмотрите на мои комментарии

var aa = undefined; // global scope 

function a() { 
    if(true) { // useless 
     var aa; // declare aa in the function scope and assign undefined 
     // to work on the global aa you would remove the above line 
     console.log(aa); // here aa is still undefined 
     if(!aa) { 
      aa = 11; // reassign the local aa to 11 
      bb = 12; // assign 12 to the global var bb 
     } 
     console.log(aa); // aa is 11 
    } 
    console.log(aa); // still in the function scope so it output 11 
    console.log(bb); // should be 12 
} 
console.log(aa) // undefined nothing has change for the global aa 

Для более читать эту great Ebook

+0

Итак, вы имеете в виду «undefined» - это значение, которое присваивается переменной в моем случае? –

+0

yes Значение по умолчанию является 'undefined', если вы не назначили вручную значение,' var a = undefined' равно 'var b;' 'a === b' –

+0

Благодарим вас за очищение моего заблуждения. Я всегда думал о «var a», поскольку «ничего не существует». Но теперь я могу понять, что «может существовать переменная« a », которая находится внутри этой области, но для нее не было присвоено никакого значения. Пожалуйста, поправьте меня, если я ошибаюсь. –

0

Попробуйте удалить var aa; с вашей функцией.

Что здесь происходит function scope. Вы указали aa как локальную переменную в пределах function a. локальная переменная получает установлен в 11.