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

2 つの同一の JavaScript オブジェクトが同等とみなされないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-05 02:56:13545ブラウズ

Why Are Two Identical JavaScript Objects Not Considered Equal?

オブジェクトの等価性を理解する: 2 つの同一のオブジェクトが等しくない理由

プログラミングでは、同一のオブジェクトを表す 2 つの変数は等しくないものと仮定するのが直感的です。平等とみなされます。ただし、JavaScript では、等価演算子 (==) または厳密等価演算子 (===) を使用して 2 つのオブジェクトを比較すると、多くの場合、驚くべき結果が得られます。

謎: 等価でない同一オブジェクト

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

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

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

期待どおり true を返すのではなく、両方とも比較は false を返します。この動作は、一見同一に見える 2 つのオブジェクトが等しいと期待する開発者を混乱させます。

説明: オブジェクト比較のセマンティクス

この動作を理解する鍵は、JavaScript の比較方法にあります。オブジェクト。数値や文字列のようなプリミティブなデータ型とは異なり、オブジェクトには独自の一意の ID または参照があります。 2 つのオブジェクトを比較する場合、等価演算子はそれらが全く同じオブジェクトを参照しているかどうかをチェックします。

ID と値

上の例では、 a と b は、同じ構造とプロパティを持っていますが、2 つの異なるオブジェクトです。各オブジェクトには独自の一意の参照があり、等価演算子はオブジェクトの値ではなくこの参照を評価します。

オブジェクト比較の影響

この動作は、次のオブジェクトに対して重大な影響を及ぼします。オブジェクトの比較。 2 つのオブジェクトが等しいのは、それらがまったく同じオブジェクトを参照している場合のみです。あるオブジェクトを別のオブジェクトに割り当てると、同じオブジェクトへの新しい参照が作成されるだけです。

回避策: オブジェクト プロパティの比較

2 つのオブジェクトのプロパティの同等性を比較する必要がある場合回避策の 1 つは、JSON.stringify() メソッドを使用してオブジェクトを JSON 文字列に変換し、結果の文字列を比較することです。あるいは、ヘルパー関数またはライブラリを使用して、オブジェクトのプロパティを再帰的に比較することもできます。

以上が2 つの同一の JavaScript オブジェクトが同等とみなされないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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