В чем разница между глубоким (deep copy) и поверхностным (shallow copy) копированием

Ответ

Глубокое копирование создает полностью независимую копию объекта, включая все вложенные объекты. Поверхностное копирование создает новый объект, но вложенные объекты остаются ссылками на оригиналы.

Пример с поверхностным копированием:

const obj = { a: 1, b: { c: 2 } };
const shallowCopy = { ...obj };
shallowCopy.b.c = 3; // изменит и оригинальный obj.b.c

Пример с глубоким копированием:

const deepCopy = JSON.parse(JSON.stringify(obj));
deepCopy.b.c = 4; // не повлияет на оригинальный obj

Методы глубокого копирования: JSON.parse(JSON.stringify()), библиотеки типа Lodash (_.cloneDeep()), рекурсивное копирование. Для поверхностного: spread-оператор, Object.assign(), Array.slice().