var window
важность: 5
Каков будет результат выполнения этого кода? Почему?
function test() {
alert( window );
var window = 5;
alert( window );
}
test();
Результатом будет undefined
, затем 5
.
function test() {
alert( window );
var window = 5;
alert( window );
}
test();
Такой результат получился потому, что window
– это глобальная переменная, но ничто не мешает объявить такую же локальную.
Директива var window
обработается до начала выполнения кода функции и будет создана локальная переменная, т.е. свойство LexicalEnvironment.window
:
LexicalEnvironment = {
window: undefined
}
Когда выполнение кода начнётся и сработает alert
, он выведет уже локальную переменную, которая на тот момент равна undefined
.
Затем сработает присваивание, и второй alert
выведет уже 5
.