«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему два одинаковых объекта JavaScript неравны?

Почему два одинаковых объекта JavaScript неравны?

Опубликовано 21 декабря 2024 г.
Просматривать:746

Why Are Two Identical JavaScript Objects Unequal?

Загадка равенства объектов

Несмотря на одинаковые характеристики, два, казалось бы, идентичных объекта остаются неравными в JavaScript. Это явление многих озадачило, учитывая приведенный ниже фрагмент кода:

var a = {};
var b = {};

console.log(a==b); //returns false
console.log(a===b); //returns false

Основные сведения об операторах равенства

Несоответствие между результатами обычных (==) и строгих (===) операторов равенства заключается в преобразовании типов . Обычное равенство выполняет неявное преобразование типов, а строгое равенство — нет. Однако в этом случае обе переменные являются объектами, поэтому преобразование типов не имеет значения.

Идентификация объекта

Сравнение объектов дает значение true только при сравнении одной и той же ссылки на объект, независимо от используемого оператора равенства. Другими словами, a == a, a == b (если b — псевдоним a), но a != c (если c — другой объект).

Выводы

Это уникальное поведение имеет значение для объектно-ориентированного программирования. Два объекта с одинаковыми свойствами, но разными ссылками считаются неравными, даже если они представляют одну и ту же реальную сущность.

Например, в базе данных два объекта представляют одного и того же человека с одинаковым именем, адресом и именем. номера телефонов не будут считаться одинаковыми, поскольку они имеют разные ссылки на объекты. Это может привести к путанице в результатах при сравнении объектов.

Решения

Если необходимо сравнить свойства двух объектов, рассмотрите возможность использования сторонней библиотеки или реализации пользовательская функция сравнения, которая проверяет каждое свойство индивидуально.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3