Этот вопрос проверяет понимание разницы между неизменяемостью ссылки и изменяемостью содержимого объекта в JavaScript.
Ключевое слово const запрещает переопределять ссылку на объект, но не запрещает менять его внутреннее содержимое.
Если объект объявлен через const, вы не можете присвоить ему другой объект, но можете изменять его свойства.
Это связано с тем, что const работает на уровне ссылки, а не на уровне структуры данных.
Поэтому добавление, изменение или удаление свойств объекта разрешено.
В JavaScript важно понимать, что именно делает const и на каком уровне он работает.
const — это способ объявления переменной, который запрещает изменение ссылки на значение, но не делает само значение неизменяемым, если это объект.
Когда вы объявляете объект через const, происходит следующее:
В переменную записывается ссылка на объект в памяти
Эта ссылка становится неизменяемой
Сам объект по этой ссылке остаётся изменяемым
const user = { name: 'Alex' };
// Разрешено
user.name = 'Bob';
user.age = 30;
// Ошибка
user = { name: 'John' };
JavaScript разделяет:
примитивы (number, string, boolean)
ссылочные типы (object, array, function)
Для объектов изменение свойств не требует изменения ссылки, а значит const этому не мешает.
Если требуется запретить изменение содержимого:
использовать Object.freeze
применять иммутабельные подходы
создавать новые объекты вместо изменения существующих
const защищает ссылку, а не объект. Для реальной неизменяемости нужно использовать дополнительные механизмы.