Sobes.tech
Назад к вопросам
Middle
3

Что такое var, let, const? Чем они отличаются? Что такое всплытие (hoisting)?

Компании, где спрашивали
X5 techX5 tech

Ответ от нейросети

sobes.tech AI

В JavaScript var, let и const — это ключевые слова для объявления переменных, но они отличаются по области видимости, возможности переназначения и всплытию.

  • var — объявляет переменную с функциональной или глобальной областью видимости. Переменные, объявленные через var, подвержены всплытию (hoisting), то есть их объявление поднимается вверх функции, но инициализация остаётся на месте. Можно переопределять и переназначать.

  • let — объявляет переменную с блочной областью видимости (внутри {}). Не подвержена всплытию в классическом смысле — доступ к переменной до объявления вызовет ошибку (temporal dead zone). Можно переназначать, но нельзя переобъявлять в одной области.

  • const — тоже блочная область видимости, но переменная должна быть инициализирована при объявлении и не может быть переназначена. Однако, если это объект или массив, содержимое можно изменять.

Всплытие (hoisting) — это механизм, при котором объявления переменных и функций поднимаются вверх своей области видимости во время компиляции. Для var это означает, что переменная существует с начала функции, но инициализируется в месте объявления. Для let и const объявление тоже поднимается, но доступ к ним до объявления запрещён (temporal dead zone).

Пример:

console.log(a); // undefined (var всплыла)
var a = 5;

console.log(b); // ReferenceError (temporal dead zone)
let b = 10;

const c = 15;
c = 20; // TypeError: Assignment to constant variable.