为什么var aa=[1,2,3]; var bb=[1,2,3]; alert(aa==bb);输出结果为:false

2025-05-20 13:25:04
推荐回答(4个)
回答1:

对于Array,Object等高级类型,==和===是没有区别的。
因为它们都是进行“指针地址”比较,而你定义了2个数组,分配了2个不同的内存空间在堆里。


// 比如
var aa=[1,2,3],bb=aa; // bb指向aa的内存地址
aa==bb;  // true
aa===bb; // true

回答2:

你可以循环遍历两个数组,然后比较每个元素是否相等,如果相等那么这两个数组就算“相等”。

回答3:

你把两个数组理解成对象吧,两个对象占用的内存地址不一样

回答4:

地址比较。所以为false
http://blog.csdn.net/spring21st/article/details/4799786