首页 > 编程语言 > 详细

javaScript中==和===对数组、对象的判断是它们是否同一个实例对象

时间:2019-12-02 15:39:51      阅读:74      评论:0      收藏:0      [点我收藏+]
 

问题描述

在实现业务时,大量用到了 if(a === b)这样的判断,但有一个类似判断一直进不去这个if条件, a === b 返回的一直是false,但是其他几个类似判断,都正常触发条件。

原因分析

我们都知道 === 是严格相等,首先要两个值的类型相等,无法触发条件的这个判断,a和b都是Array对象,且通过打印,看到数组中的元素是一样的。于是写了几个测试判断,如下:

技术分享图片

通过上图可以看到,对于javascript的基础类型Number、String,如c2和d2都等于1,用c2===d2的结果就是true,但是对于高级类型Object和Array,即便它们的值相等,===返回的也是false,甚至于==也是false。

这实际上是javascript的语言特性:

javascript中Array也是对象,而==或===操作符只能比较两个对象是否是同一个实例,也就是是否是同一个对象引用。图中两个数组显然不是同一个对象实例,由于思维惯性,导致写代码的时候对不同数组也用了类似判断,导致无法成功触发条件。

 

解决方案

目前JavaScript没有内置的操作符判断对象的内容是否相同。

可以使用lodash的isEqual方法,如下图:

技术分享图片

 

 

javaScript中==和===对数组、对象的判断是它们是否同一个实例对象

原文:https://www.cnblogs.com/yourstars/p/11970525.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!