3

この奇妙な JavaScript の動作を説明できますか?

初め :

[] === []  false
[] ==  []  false

なぜ偽?オブジェクトは同一であるため、true を返す必要があります。

2番 :

 [] !== []  true
 [] !=  []  true

繰り返しますが、なぜ本当ですか?オブジェクトは同一です。

4

2 に答える 2

7

それらは同一ではありません。オブジェクト IDは、同じインスタンスを指す両方のオペランドによって定義されます。

var a = [],
    b = [];
a == b; // false
a == a; // true

2 つのリテラルは、常に 2 つの異なるインスタンスに評価され、等しいとは見なされません。構造上の同等性を探している場合は、JavaScript で配列を比較する方法を参照してください。.

于 2013-10-11T10:43:23.533 に答える
4

オブジェクトは同一ではありません。この場合、オブジェクトへの参照を比較します。簡単に言えば、これらのオブジェクトが配置されているメモリ内のアドレスを比較します。このルールは、実際の値を比較するプリミティブには関係ありません。

于 2013-10-11T10:29:11.910 に答える