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