JS中的相等性判断

一、ES2015中有四种相等算法
1. 抽象(非严格)相等比较。(==)
2. 严格相等比较。(===)
3. 同值。(Object.is())
4. 同值零。

二、JavaScript提供三种不同的值比较操作
1. 严格相等比较,使用 === 比较符号。(在两者进行比较时,不会执行类型转换)
2. 抽象相等比较,使用 == 比较符号。(在两者进行比较时,会执行类型转换。)
3. Object.is()。(和严格相比较类似,只是对于NaN和+0与-0进行特殊处理)
1. NaN == NaN 返回false,NaN === NaN 返回false,Object.is(NaN, NaN) 返回true。
2. +0 === -0 返回true,+0 == -0 返回true,Object.is(+0, -0) 返回false。

三、非严格相等比较下的类型转换
1. undefined与null和其他类型的值相比较时,都不相等。以至于其他类型在与undefined或者null比较时都不会出现类型转换。
2. 同类型的值相比较时不需要进行类型转换。
3. 引用对象在和其他非undefined、null、引用类型的值相比较时,都会尝试调用 toString和valueOf方法将自身先转换为原始值再参与比较。
4. String类型在与Number、Boolean类型相比较时,会先转成数字再参与比较。
5. Boolean类型再与Number、String、引用类型相比较时,会先转成数字在参与比较。
6. Number类型与其他类型相比较时,不用转换类型。

 

 

相关链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness 

posted @   唯一念  阅读(362)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示