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.