PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Что такое var?

Основы языка

`var` — устаревший способ объявления переменной с функциональной областью видимости и hoisting. В современном коде его заменяют let и const.

Свойства var

  • Функциональная область — переменная видна во всей функции, игнорирует блоки {}.
  • Hoisting в `undefined` — поднимается и инициализируется как undefined до строки объявления.
  • Можно переобъявлять в том же скоупе без ошибки.
  • Привязывается к глобальному объекту при объявлении в глобальной области.
console.log(x); // undefined (не ошибка)
var x = 5;

if (true) {
  var y = 10;
}
console.log(y); // 10 — var игнорирует блок

Проблемы var

Утечка из блока

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i)); // 3, 3, 3 — одна переменная
}

С let было бы 0, 1, 2.

Неожиданный hoisting

Обращение до объявления даёт undefined вместо ошибки, что скрывает баги.

var против let/const

  • Область: var — функциональная, let/const — блочная.
  • Hoisting: var — undefined, let/const — TDZ (ошибка).

Коротко для собеседования

var — функциональная область, hoisting в undefined, переобъявление разрешено. Порождает утечки из блоков и баги от раннего доступа. В современном коде используют let/const (блочная область, TDZ).

Другие вопросы раздела