Получить доступ

Чем var отличается от let и const?

JuniorОсновы JavaScript
Ещё спрашивают так:
  • Что такое hoisting и временная мёртвая зона?
Коротко

var — область видимости функции, поднимается (hoisting) со значением undefined, допускает повторное объявление. let и const — область видимости блока {}, до строки объявления — временная мёртвая зона (ReferenceError). const запрещает переприсваивание, но не изменение объекта.

  • В современном коде: const по умолчанию, let — если переменная меняется, var — не использовать
  • var в цикле с колбэками — одно значение на все итерации; let создаёт новую переменную на итерацию
  • Объявления функций поднимаются целиком

А ещё Object.freeze — неизменяемость объекта (поверхностная)

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

console.log(a);   // undefined — var поднят
var a = 1;

console.log(b);   // ReferenceError — временная мёртвая зона
let b = 2;

const user = { name: "Аня" };
user.name = "Оля";    // можно: меняем объект
user = {};            // TypeError: переприсваивание

Hoisting. Перед выполнением движок регистрирует объявления области. var сразу инициализируется undefined, let/const — регистрируются, но недоступны до своей строки.

Блочная область:

for (var i = 0; i < 3; i++) setTimeout(() => console.log(i));  // 3 3 3
for (let j = 0; j < 3; j++) setTimeout(() => console.log(j));  // 0 1 2

var на верхнем уровне скрипта становится свойством window, let и const — нет.

Что хотят услышать

  • Область видимости: функция против блока.
  • Hoisting и временная мёртвая зона.
  • Что запрещает const.
  • Ловушка var в цикле.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем