В чем разница между Deep и Shallow сравнением объектов

«В чем разница между Deep и Shallow сравнением объектов» — вопрос из категории JavaScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Shallow сравнение проверяет только ссылки на объекты (===), не углубляясь в их свойства. Deep сравнение рекурсивно проверяет все свойства объектов на равенство.

Пример:

const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { a: 1, b: { c: 2 } };

// Shallow сравнение
console.log(obj1 === obj2); // false (разные ссылки)

// Deep сравнение (например, с lodash)
console.log(_.isEqual(obj1, obj2)); // true (содержимое одинаково)

Shallow быстрое, но поверхностное. Deep точное, но медленное. В React.memo используется shallow сравнение пропсов для оптимизации.