Проверяет понимание сравнения объектов по ссылке в JavaScript, а не по значению.
В JavaScript объекты являются ссылочным типом данных. Когда вы создаете объект, переменная хранит не сам объект, а ссылку на область памяти, где он находится. При сравнении двух объектов операторы == и === сравнивают именно эти ссылки, а не содержимое объектов.
const obj1 = { name: 'Alice' };
const obj2 = { name: 'Alice' };
console.log(obj1 === obj2); // falseХотя obj1 и obj2 выглядят одинаково, они указывают на разные участки памяти. Даже если объекты имеют идентичные свойства, они не равны по ссылке.
Для сравнения содержимого объектов можно использовать несколько подходов:
const obj1 = { name: 'Alice', age: 30 };
const obj2 = { name: 'Alice', age: 30 };
console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // trueЭтот метод прост, но не учитывает функции, undefined и специальные объекты (например, Date).
Понимание ссылочного сравнения важно для избежания ошибок при проверке равенства объектов. Используйте глубокое сравнение, когда нужно проверить идентичность содержимого, а не ссылки.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию