+0 -0 Number.NaN NaN undefined null '' 相等性判断
主要区分 +0
和 -0
、NaN
和 NaN
在不同情况下的相等性区别
==
===
console.log(+0 === -0) // true |
Object.is() 方法判断两个值是否是相同的值。比较时不会做类型转换,这与 ==
===
运算符的判定方式都不一样
Object.is(+0, -0) // false |
在 Set, Map 内部,两个 NaN 是相等, +0 和 -0 也是相等的
let a = [NaN, NaN, undefined, undefined, +0, -0, {}, {}] |
总结:
- 比较运算符中
+0
和-0
是相等的、NaN
和NaN
是不等的 - Object.is() 方法中
+0
和-0
是不相等的、NaN
和NaN
是相等的 - 在 Set, Map 内部,
+0
和-0
是相等的、NaN
和NaN
也是相等的