这个==比较后的返回结果是什么为什么?

var arrA=[];
var arrB=[];
arrA==arrB?为什么?
arrA===arrB?为什么他们分别比较了哪些东西?

阅读 1.8k
3 个回答

这两个等式的结果都是false,因为这2个数组的存储地址不一样,最后无论这两个数据多么一样,两个数组都是不相等。

数组不是基本类型,在内部是按照存储地址进行比较的。若真要比较两个数组中的值是否相等,可以使用toString()将其转为字符串,然后再比较,当然,这种方式是基于数组中的数据没有逗号,的情况下时。

还有一种情况,两个数组是相等的,因为这2个数组是相同的存储地址,因此是相等的,而且改变其中任意一个数组,另外一个数组的值也会一起改变:

var arrA = arrB = [];
arrA==arrB; // true

这种引用类型就是比'地址'啊, 无非是在堆中的一个地址而已

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题