Ответ
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 сравнение пропсов для оптимизации.