ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクトの等価性: `==` と `===` の違いは何ですか?

JavaScript オブジェクトの等価性: `==` と `===` の違いは何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 07:34:11402ブラウズ

JavaScript Object Equality: What's the Difference Between `==` and `===`?

通常のオブジェクトの同等性と厳密なオブジェクトの同等性の違いは何ですか?

JavaScript では、オブジェクトを通常 (==) または厳密 (=) で比較します。 ==) 等価演算子では、期待した結果が得られない場合があります。プリミティブ データ型とは異なり、オブジェクトはメモリ アドレスによって参照されます。したがって、それらの値のみに基づく比較は十分ではありません。

次のコードを考えてみましょう。

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

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

a と b は両方とも空のオブジェクトですが、それらの参照は異なるメモリ アドレスを指します。その結果、通常の等価評価と厳密な等価評価の両方で false が返されます。

これが重要な理由

このニュアンスを理解することは、正確なオブジェクト比較を保証するために重要です。オブジェクトは、まったく同じメモリ アドレスを参照する場合にのみ等しいと見なされます。オブジェクトを新しい変数に割り当てると、内容が同一であっても、新しい参照が作成されます。

たとえば、a、b、c の 3 つのオブジェクトがあるとします。

a = {}
b = a
c = {}

この場合、a == a、a == b、a != cです。これは、a と b が同じメモリ アドレスを参照しているのに対し、c は独自の一意の参照を持っているためです。

結論

オブジェクトを比較するときは、オブジェクトが等しいことを覚えておくことが重要です。値ではなくメモリ参照に基づいています。通常の等価演算子と厳密な等価演算子はオブジェクトに対して同じように動作し、比較されるオブジェクトが同じメモリ アドレスを参照している場合にのみ true を返します。

以上がJavaScript オブジェクトの等価性: `==` と `===` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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