Как сравниваются объекты?
Этот вопрос проверяет знание того, как JavaScript сравнивает объекты. Это ключевое понятие, которое нужно понимать при работе с данными.
Короткий ответ
В JavaScript объекты сравниваются по ссылке, а не по значению. Это означает, что два объекта считаются равными (===), только если они ссылаются на один и тот же объект в памяти. Даже если два объекта имеют одинаковые свойства и значения, они не будут равны, если это разные экземпляры.
Длинный ответ
В JavaScript при сравнении объектов используется проверка ссылок на один и тот же объект, а не их содержимого. Это отличается от примитивных типов, которые сравниваются по значению. Когда вы сравниваете два объекта оператором === или ==, JavaScript проверяет, указывают ли они на одно и то же место в памяти. Если да, объекты считаются равными, если нет — они считаются разными, даже если их свойства идентичны.
let obj1 = { name: "John" };
let obj2 = { name: "John" };
let obj3 = obj1;
console.log(obj1 === obj2); // false, разные объекты, хоть и с одинаковыми данными
console.log(obj1 === obj3); // true, оба ссылаются на один объектЕсли вам нужно сравнивать объекты по их содержимому, нужно реализовать специальную функцию, которая будет проверять каждое свойство объектов.
Пример функции глубокого сравнения:
function deepEqual(obj1, obj2) {
return JSON.stringify(obj1) === JSON.stringify(obj2);
}