謎の解明: 同一プロパティのオブジェクトが等価性チェックに失敗する理由
JavaScript の領域では、等価演算子 (== と = ==) は、同じプロパティを持つオブジェクトを比較するときに予期しない動作をするようです。この異常は、JavaScript のオブジェクト比較の基本原則に由来しています。
次のコードを考えてみましょう:
var a = {}; var b = {}; console.log(a == b); // returns false console.log(a === b); // returns false
興味深いことに、オブジェクト 'a' と 'b' は同一のプロパティを持っていますが、等価性チェックの結果は false です。同一のプロパティを持つオブジェクトは等しいとみなされると予想されるため、この動作は直観に反するように思えます。
この現象を理解するには、通常の等価性 (==) と厳密な等価性 (===) の違いを認識することが重要です。厳密な等価 (===) では型変換が無効になりますが、どちらの場合でも、オブジェクト比較はまったく同じオブジェクトが比較される場合にのみ true と評価されます。
言い換えれば、使用される等価演算子の種類に関係なく、原則は同じままです: オブジェクトは、まったく同じインスタンスを参照する場合にのみ等しいです。したがって、同一のプロパティを持つ 2 つの異なるオブジェクト (この例の「a」と「b」など) は、JavaScript の観点からは決して等しくありません。
オブジェクトのプロパティの等しいことを確認する必要がある場合は、オブジェクトを走査してそのプロパティ値を 1 つずつ比較するなど、別のアプローチを検討することを検討してください。
以上が同じ JavaScript オブジェクトが等価性チェックに失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。