Где доступна переменная, объявленная через const?
Основы языка
Переменная, объявленная через `const`, доступна только внутри блока `{}`, где она объявлена (блочная область видимости), начиная со строки объявления.
Блочная область
const видна лишь в пределах ближайших фигурных скобок — как и let:
{
const x = 1;
console.log(x); // 1
}
console.log(x); // ReferenceError
if (true) {
const y = 2;
}
console.log(y); // ReferenceErrorTemporal Dead Zone
До строки объявления обращение кинет ReferenceError (переменная в TDZ):
console.log(a); // ReferenceError
const a = 5;Особенности const
- Блочная область видимости (как
let). - Обязательная инициализация при объявлении.
- Нельзя переприсвоить ссылку (но содержимое объекта менять можно).
В циклах
const работает в for...of/for...in (новая привязка на итерацию), но не в классическом for(;;) со счётчиком (там нужно переприсваивание — let).
for (const item of [1, 2, 3]) { /* ок */ }const против var
const — блочная область и TDZ; var — функциональная область и hoisting в undefined.
Коротко для собеседования
const видна только внутри блока {}, где объявлена (блочная область), и только после строки объявления (до неё — TDZ). Требует инициализации и запрещает переприсваивание ссылки. Область видимости такая же, как у let.