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