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