вернуться к уроку

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.