Вопрос проверяет способность предугадывать побочные эффекты работы со ссылочными типами данных.
Главная проблема поверхностного копирования — общее использование вложенных объектов.
Изменение вложенных данных в копии может неожиданно изменить исходный объект.
Это часто приводит к трудноуловимым багам.
Особенно опасно это в состоянии приложений и UI-фреймворках.
Поверхностное копирование выглядит безопасным, но на практике может приводить к скрытым ошибкам.
Если изменить вложенный объект в копии, исходный объект тоже изменится:
const state = {
user: { name: 'Alex' }
};
const newState = { ...state };
newState.user.name = 'Bob';
// state.user.name тоже 'Bob'
Такие эффекты опасны, потому что:
изменение происходит неявно
источник мутации трудно отследить
ошибка может проявиться позже
Поверхностное копирование может:
ломать оптимизацию перерендеров
приводить к некорректному сравнению состояний
вызывать лишние обновления UI
Во многих архитектурах ожидается, что данные:
не изменяются напрямую
всегда заменяются новыми объектами
Поверхностное копирование легко нарушает это правило.
Основной риск поверхностного копирования — скрытая мутация вложенных данных. Его нужно использовать только при полном понимании структуры объекта.