Проверяет понимание мутабельности объектов в JavaScript и способов сохранения исходного состояния при изменении вложенных свойств.
В JavaScript переменная, объявленная через const, запрещает переназначение самой переменной, но не запрещает изменение свойств объекта. Например, const obj = { a: { b: 1 } } позволяет выполнить obj.a.b = 2 без ошибок. Это приводит к потере исходного значения, если вы не сохранили его заранее.
Чтобы получить исходное значение после изменения, необходимо создать копию объекта до мутации. Для поверхностного копирования подойдёт оператор spread: const copy = { ...obj }. Однако он копирует только верхний уровень, а вложенные объекты остаются общими ссылками. Для глубокого копирования используйте structuredClone() или JSON.parse(JSON.stringify(obj)) (последний не работает с функциями и undefined).
const original = { a: { b: 1 } };
const deepCopy = structuredClone(original);
original.a.b = 2;
console.log(deepCopy.a.b); // 1Это важно в React и Redux, где иммутабельность состояния обязательна для корректной работы механизма обновлений. Например, при изменении состояния через setState нужно создавать новый объект, а не мутировать старый. Также это полезно при работе с конфигурациями или кэшированием, когда требуется откат к предыдущему состоянию.
Используйте глубокое копирование перед мутацией, если нужно сохранить исходные данные. Это стандартная практика в функциональном программировании и современных фронтенд-фреймворках для обеспечения предсказуемости и отладки.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию