js 中有大致归纳为三种相等性的判断
-
strict equality 严格相等 不会执行隐式转换,会按照 IEEE 754 标准对 NaN、-0 和 +0 进行特殊处理(故 NaN != NaN,且 -0 == +0)
-
loose equality 会执行隐式转换,且会按照 IEEE 754 标准对 NaN、-0 和 +0 进行特殊处理
-
Object.is 不会执行隐式转换,也不会按照 IEEE 754 标准对 NaN、-0 和 +0 进行特殊处理
js 中有四种相等算法
Table of contents
Open Table of contents
IsLooselyEqual
IsLooselyEqual 对应 ==
IsStrictlyEqual
IsStrictlyEqual 对应 ===
运用于 Array.prototype.indexOf()、Array.prototype.lastIndexOf()、TypedArray.prototype.index()、TypedArray.prototype.lastIndexOf() 和 case
SameValue
SameValue 对应 Object.is()
SameValueZero
SameValueZero 被许多内置运算使用
Array.prototype.includes()、TypedArray.prototype.includes() 及 Map 和 Set