2010-11-18 80 views
2

我對javascript比較感到困惑。讓我們說:Javascript比較表達式

var array1 = [1,2,3]; 
var array2 = [1,2,3]; 

array1 == array2 ; 
false // why false ? 

array1 === array2; 
false // also why false? 

任何人都可以清楚地向我解釋這一點嗎?先謝謝你。

回答

4

它們是錯誤的,因爲您正在比較兩個不同的Array實例。只有當它們實際上引用相同的實例時纔是如此。

var array1 = [1,2,3]; 
var array2 = array1; 

array1 == array2 ; // true 

要比較他們的內容,您需要逐一比較每個項目。像這樣的東西,雖然這看起來並不比一個層次更深。

var array1 = [1,2,3]; 
var array2 = [1,2,3]; 

function compareArrays(a1,a2) { 
    var len = a1.length; 
    if(len !== a2.length) 
     return false; 
    while(len--) { 
     if(a1[ len ] !== a2[ len ]) { 
      return false; 
     } 
    } 
    return true; 
} 

compareArrays(array1, array2); // true