referencia: https://dmitripavlutin.com/how-to-compare-objects-in-javascript/
Siguiendo con la referencia, la comparación profunda es:
La igualdad profunda es similar a la igualdad superficial, pero con una diferencia. Durante la verificación superficial, si las propiedades comparadas son objetos, se realiza una verificación recursiva de igualdad superficial en estos objetos anidados.
const objA = { propA: 123 propB: 'a' propObj1: { // assume reference: 1234 propObj1: 'abc' } } const objB = { propA: 123 propB: 'a' propObj1: { // assume reference: 1234 propObj1: 'abc' } } ¿Es posible que objA y objB sean iguales en una comparación superficial pero no en una comparación profunda?
Debido a que su propObj1 tiene la misma referencia, el cambio a objA.propObj1 también se reflejará en objB.propObj1 , lo que significa que también serán iguales en comparación profunda. ¿Puedes dar un ejemplo donde es true en una comparación superficial pero false en una comparación profunda?
¡Ha respondido a su propia pregunta! El mismo hecho de que tuvo que decir "asumir referencia: 1234" en su ejemplo dice que sabe que una comparación superficial no funcionará si propObj1 apunta a valores distintos pero iguales (es decir, su ejemplo exacto pero sin "asumir referencia: 1234" comentario.
objA y objB a continuación fallarán en una verificación de igualdad superficial, pero pasarán una verificación de igualdad profunda:
const objA = { propA: 123 propB: 'a' propObj1: { propObj1: 'abc' } } const objB = { propA: 123 propB: 'a' propObj1: { propObj1: 'abc' } }