Почему неопределенный var не добавляется в оконный объект JavaScript?
Насколько я знаю, следующее объявление не добавит никакого значения к переменной aa
:
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
}
Теперь, если я хочу использовать доступ к VARS aa
а также bb
Я могу получить доступ только bb
не aa
, Мой вопрос почему aa
невозможно получить доступ извне, потому что в объявлении я не назначил ему никакого значения, и оно все еще не определено?
Спасибо.
2 ответа
Решение
Посмотри мои комментарии
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
Для более подробной информации читайте эту замечательную книгу
Попробуйте удалить var aa;
from within your function.
What's happening here is function scope. Вы объявили aa
as a local variable within function a
, the local variable IS getting set to 11.