9

なぜ[] !== []JavaScript にあるのですか?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_samenessを読みましたが、これを説明するものは見つかりませんでした。

編集:この質問またはこの質問は私のものとまったく同じで はないと思います。==狂ったように振る舞うオペレーターについて尋ねます。答えは私の質問に対する答えですが、同じ質問ではありません。

4

3 に答える 3

9

これにより、2 つの配列リテラルの参照チェックが行われ、それらが同じインスタンスであるかどうかが確認されます。2 つのリテラルがあるということは、2 つの別個の配列を作成していることを意味するため、参照チェックは false を返します。これは true を返します。

var a = []
var b = a

//b === a

これは、同じ配列への参照が 2 つあるためです。

于 2016-10-28T21:14:33.687 に答える
4

[]書き込むたびに新しい(そして空の)配列を作成します。内容に関係なく、2 つの配列を比較しています。それらのポインター (または参照) が比較されています。

var array = [];
var anotherArray = array; // these two will point to the same array, so they are equal


array === anotherArray; // true
array === []; // false


array.push('something');
anotherArray.length; // 1
于 2016-10-28T21:13:44.967 に答える