オブジェクトの等価性の困惑
同一の特性を共有しているにもかかわらず、JavaScript では一見同一に見える 2 つのオブジェクトは等価ではありません。以下のコード スニペットを考えると、この現象は多くの人を当惑させています。
var a = {}; var b = {}; console.log(a==b); //returns false console.log(a===b); //returns false
等価演算子を理解する
通常 (==) の結果と厳密な結果の間の差異(===) 等価演算子は型変換にあります。通常の等価性では暗黙的な型変換が実行されますが、厳密な等価性では暗黙的な型変換は実行されません。ただし、この場合、両方の変数がオブジェクトであるため、型変換は関係ありません。
Object Identity
オブジェクトの比較は、同じオブジェクト参照を比較する場合にのみ true と評価されます。使用される等価演算子に関係なく。言い換えると、a == a、a == b (b が a のエイリアスの場合)、a != c (c が別のオブジェクトの場合) となります。
意味
この独特の動作は、オブジェクト指向プログラミングに影響を与えます。同一のプロパティを持つが参照が異なる 2 つのオブジェクトは、同じ現実世界のエンティティを表している場合でも、等しくないとみなされます。
たとえば、データベースでは、同じ名前、住所、および同じ人物を表す 2 つのオブジェクトが存在します。電話番号はオブジェクト参照が異なるため、等しいとはみなされません。これにより、オブジェクトの比較を実行するときに混乱を招く結果が生じる可能性があります。
解決策
2 つのオブジェクトのプロパティを比較する必要がある場合は、サードパーティのライブラリを使用するか、各プロパティを個別にチェックするカスタム比較関数。
以上が2 つの同一の JavaScript オブジェクトが等しくないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。