en.javascript.info/01-js/05-functions-closures/02-closures/03-var-window/solution.md
Ilya Kantor f301cb744d init
2014-10-26 22:10:13 +03:00

1,015 B
Raw Blame History

Результатом будет 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.