严格相等:不进行类型转换。满足以下条件的两个值全等
- 值相等
- 值类型相等
- 当值类型为数值类型时:
- 浮点数 0 是不分正负的,所以
+0 === -0
返回true
- 不是
NaN
,等式(x !== x)
成立的唯一情况是x
的值为NaN
- 浮点数 0 是不分正负的,所以
宽松相等(非严格相等):执行类型转换
比较两个值是否相等前,将两个被比较的值转换为相同类型。在转换后(等式的一边或两边都可能被转换),最终的比较方式等同于全等操作符 ===
的比较方式。 相等操作符满足交换律。
同值相等(Object.is):与三等号相同,但是对于 NaN
和 -0
和 +0
进行特殊处理
Object.is(NaN,NaN)