Что можно изменить в 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 (поверхностно).