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

Что можно изменить в const?

Основы языка

У `const` нельзя переприсвоить ссылку, но можно менять содержимое объекта или массива, на который она указывает. const защищает привязку, а не значение.

Что защищает const

const запрещает повторное присваивание самой переменной:

const x = 1;
x = 2; // TypeError

Что можно менять

Если const указывает на объект/массив, его внутренности изменяемы:

const user = { name: 'Ann' };
user.name = 'Bob';   // ок — меняем поле
user.age = 25;       // ок — добавляем поле
delete user.age;     // ок
user = {};           // TypeError — меняем ссылку

const arr = [1, 2];
arr.push(3);         // ок → [1, 2, 3]
arr[0] = 99;         // ок
arr = [];            // TypeError

Как сделать неизменяемым

const не даёт иммутабельности содержимого. Для этого:

const frozen = Object.freeze({ a: 1 });
frozen.a = 2;  // молча игнорируется (ошибка в strict)

Object.freeze поверхностный — вложенные объекты нужно замораживать отдельно (или structuredClone + рекурсия).

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

const защищает только ссылку: переприсвоить переменную нельзя, но менять поля объекта или элементы массива можно. Для настоящей неизменяемости содержимого используют Object.freeze (поверхностно).

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