开发者

Javascript Comparision expression

I am confused about javascript comparison. let's say :

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

array1 == array2 ; 
false 开发者_StackOverflow社区// why false ? 

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

Can anyone explain this to me clearly? Thank you in advance.


"Objects, arrays, and functions are compared by reference."

-- O'Reilly's JavaScript: The Definitive Guide

In your case array1 is a reference to a different Array than array2.

See here for a way to compare Arrays.


They are false because you are comparing two different Array instances. It will only be true if they are actually references to the same instance.

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

array1 == array2 ; // true

To compare their content, you need to compare each item individually. Something like this, though this doesn't look any deeper than the one level.

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜