2017-04-09 11 views
0

以下の空の配列がいくつかありますが、それらを比較した結果はすべてfalseです。最初の比較(== b)はへJavaScript:配列間の比較演算子

var a = new Array(); 
var aa = new Array(); 
var b = []; 
var bb = []; 
document.write(a == b);  // false 
document.write(a == aa); // false 
document.write(b == bb); // false 

私はやや this pageで答えを見つけることができますが、他の二つのために私はなぜ把握することはできません。誰か助けてくれますか?

答えて

0

答えはすべてのケースで同じです。このnew Array[]または[]を使用すると、新しい配列が作成され、この配列への参照は左側のvariabeに格納されます。つまり、あなたの場合、4つの配列を作成します。したがって、変数a,aa,bおよびbbの中で、それらと異なる参照があります。それがあなたが言及したすべての表現が偽と評価される理由です。 equals演算子は、配列内の項目を参照するだけで比較しません。

次のスニペットを考えてみましょう。 arrayA以降、arrayBarrayCには同じアレイへの参照が含まれているため、項目をarrayCにプッシュしてコンソールに出力すると、同じ内容が表示されます。

var arrayA = []; 
 
var arrayB = arrayA; 
 
var arrayC = arrayB; 
 

 
// Apparently this evaluate to true. 
 
console.log(arrayC == arrayA); 
 

 
arrayC.push(1); 
 
arrayC.push(2); 
 
arrayC.push(3); 
 
arrayC.push(4); 
 

 
console.log(arrayA); 
 
console.log(arrayB); 
 
console.log(arrayC);

+0

ありがとう!私は今はっきりしています。私は "=="は値を比較し、 "==="は値とタイプを比較すると考えました。 –

+0

あなたは大歓迎です! – Christos