ホームページ >ウェブフロントエンド >jsチュートリアル >2 つの空の JavaScript オブジェクトが同等として比較されないのはなぜですか?

2 つの空の JavaScript オブジェクトが同等として比較されないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-04 01:59:11896ブラウズ

Why Do Two Empty JavaScript Objects Not Compare as Equal?

なぜ 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。