Skip to content

Latest commit

 

History

History
27 lines (24 loc) · 1.49 KB

hoisting.md

File metadata and controls

27 lines (24 loc) · 1.49 KB

Hoisting: поднятие переменных вверх

Вопрос

Что содержится в переменной test?

var a = 1;
function f(){
  window.test = a;
  var a = 2;
}
f();

Ответ

undefined

Объявление переменных в JavaScript всегда переносится интерпретатором наверх тукущей области видимости (scope), в независимости от того, где была объявлена переменная. Подобное поведение называется "поднятием переменных", или на английском hoisting. Важно понимать, что во время подобного "поднятия переменной" ей не присваивается значение, то есть, фактически, код представленный выше будет интерпретироваться следующим образом:

var a = 1;
function f(){
  var a; // a === undefined
  window.test = a; // a === undefined, test === undefined
  a = 2; // a === 2
}
f();

В данном случае объявление переменной поднимается наверх до обявления переменной test. Таким образом test не получит значения переменной a, объявленной в области видимости, находящейся выше.