ホームページ >ウェブフロントエンド >jsチュートリアル >2 つの空の JavaScript オブジェクトが同等として比較されないのはなぜですか?
なぜ 2 つの同一のオブジェクトは互いに同一ではないのですか?
JavaScript の等価演算子 (==) と厳密等価演算子(===) は値を比較するために使用されます。ただし、オブジェクトを比較する場合、これらの演算子は予想とは異なる動作をします。
次のコードを考えてみましょう:
var a = {}; var b = {}; console.log(a == b); // returns false console.log(a === b); // returns false
このコードは、a と b が両方ともであるにもかかわらず、両方の式に対して false を記録します。空のオブジェクト。これはなぜですか?
通常の等価 (==) と厳密な等価 (===) の主な違いは、厳密な等価演算子では型変換が無効になることです。 a と b はどちらもオブジェクトであるため、この場合、等価演算子の種類は関係ありません。
使用される等価演算子に関係なく、オブジェクトの比較は、全く同じオブジェクトを比較する場合にのみ true と評価されます。 。言い換えると、var a = {}、b = a、c = {};、a == a、a == b であるが、a != c であるとします。
2 つの異なるオブジェクト (たとえそれらが同じであっても)ゼロまたはまったく同じプロパティを持っている) は、決して等しく比較されません。 2 つのオブジェクトのプロパティの同等性を比較するには、Object.is() メソッド、または提供された回答で概説されているアプローチを使用できます。
以上が2 つの空の JavaScript オブジェクトが同等として比較されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。