0

重複の可能性:
2 つの JavaScript オブジェクトが等しいかどうかを判断するにはどうすればよいですか?

[1,[2,3]] == [1,[2,3]]が false と評価されるのはなぜですか?

また、なぜこれが起こるのですか:

var g = { a:1, b:2, c:3 };
g == { a:1, b:2, c:3 }; // false!! 
4

2 に答える 2

3

[] と {} はオブジェクトの新しいインスタンスを作成し、それらは等しくないためです。

于 2012-07-31T21:17:30.923 に答える
3

[]呼び出してからデータを入力する代わりに、配列リテラルを作成するためのショートカットnew Array()です。についても同様の話です{}。あなたの例では、実際には値ではなく参照によって比較しています。演算子で構築された 2 つのオブジェクトはnew、メモリ内の異なる場所を指しています。この==演算子を使用すると、実際には「これらのオブジェクトはメモリ内の同じ場所を指していますか?」ということになります。期待どおりに値による比較を行うには、比較している各配列/オブジェクトのメンバーを反復処理し、各値を 1 つずつ比較する必要があります。

于 2012-07-31T21:18:07.927 に答える