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