SobesLab логотип SobesLab

Ответ

Использование `const` при объявлении объекта лишь гарантирует, что сама переменная-ссылка не будет переназначена на другой объект. Однако внутреннее содержимое объекта (его свойства) при этом остаётся изменяемым. То есть `const obj = {a:1}` не позволяет сделать `obj = {}` заново, но `obj.a = 2` изменить значение вполне можно. `Object.freeze(obj)` же накладывает запрет на изменения самого объекта: после заморозки нельзя добавлять новые свойства, удалять или менять существующие (и нельзя менять перечислимость/конфигурабельность свойств). Таким образом, `Object.freeze` делает объект (только верхний уровень) неизменным. В сочетании: можно объявить объект через const и заморозить его, тогда переменную нельзя переназначить, и объект не изменить.