Проверяет понимание механизмов предотвращения изменения объектов в JavaScript и ограничений ключевого слова const.
В JavaScript объекты хранятся по ссылке. Когда вы объявляете переменную с const, вы фиксируете саму ссылку, но не содержимое объекта. Это означает, что вы не можете присвоить переменной другой объект, но можете изменять свойства текущего объекта. Например:
const user = { name: 'Alice' };
user.name = 'Bob'; // работает, объект мутирован
user = { name: 'Charlie' }; // Ошибка: Assignment to constant variableТаким образом, const защищает только от переназначения переменной, но не от изменения самого объекта.
Для запрета изменения свойств объекта используйте метод Object.freeze(). Он делает объект неизменяемым: нельзя добавлять, удалять или изменять существующие свойства. Однако важно помнить, что Object.freeze() работает только на верхнем уровне. Вложенные объекты остаются изменяемыми, если их не заморозить отдельно.
const user = Object.freeze({ name: 'Alice', address: { city: 'NY' } });
user.name = 'Bob'; // не сработает в строгом режиме, в обычном молча игнорируется
user.address.city = 'LA'; // сработает, так как вложенный объект не замороженДля полной неизменяемости (глубокой заморозки) нужно рекурсивно применить Object.freeze() ко всем вложенным объектам. Это можно сделать вручную или с помощью библиотек, например, Immutable.js или структур из Redux Toolkit.
Неизменяемость важна в функциональном программировании, управлении состоянием (например, в Redux) и для предотвращения случайных изменений данных. Использование Object.freeze() помогает выявлять ошибки на ранних этапах, особенно в строгом режиме, когда попытка изменения выбрасывает исключение.
const не запрещает мутацию объекта, только переназначение переменной. Для защиты от изменений используйте Object.freeze(), а для глубокой неизменяемости — рекурсивную заморозку или специализированные библиотеки. Это особенно полезно при работе с глобальным состоянием и в командах, где важна предсказуемость данных.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию