2010-11-18 75 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