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

Где доступна переменная, объявленная через const?

Основы языка

Переменная, объявленная через `const`, доступна только внутри блока `{}`, где она объявлена (блочная область видимости), начиная со строки объявления.

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

const видна лишь в пределах ближайших фигурных скобок — как и let:

{
  const x = 1;
  console.log(x); // 1
}
console.log(x); // ReferenceError

if (true) {
  const y = 2;
}
console.log(y); // ReferenceError

Temporal 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.

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