javaScript中的相等性判断

javaScript中的相等性判断一般包括以下四种情况:
(1)严格相等(===)

不仅会比较值是否相等,还会比较类型是否相等,这里有一个特殊情况是 +0 === -0

(2)非严格相等(==)

比较前会进行相应的[隐式类型转换](https://blog.csdn.net/m0_38102188/article/details/87167526)。

(3)同值相等(Object.is)

需要注意的是Object.is(NaN, NaN)返回的结果是true,也就是同值相等的判断中认为NaN和NaN是相等的,
这与上述的严格相等和非严格相等都不同。同时同值相等会将-0和+0判断成不相等,这与其他三种相等性判断都不一样。

(4)零值相等

和同值相等类似,但是会将+0和-0认为是相等的。目前js中没有提供相应的方法对零值相等进行判断。

因此除了数据类型的判断(=== 和 ==)不同以外,以上四种相等性判断主要是集中在对NaN的判断和+0/-0判断的不同。
最后附上一张相等性判断的模型:
在这里插入图片描述
补充:
这里要补充的一点是对于一个数字是否是NaN的判断,有以下两种方法:
(1)isNaN
该方法会先进行类型转换,如isNaN(‘a’)是先将‘a’转换成数字,得到NaN,然后再进行判断,显然返回的结果是true。
(2)Number.isNaN
该方法是es6新增的方法,判断前不会进行类型转换,因此对是否是NaN的判断更加准确。

参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值