Skip to content
Published:

总结 js 中的相等性判断

js 中有大致归纳为三种相等性的判断

  1. strict equality 严格相等 不会执行隐式转换,会按照 IEEE 754 标准对 NaN、-0 和 +0 进行特殊处理(故 NaN != NaN,且 -0 == +0)

  2. loose equality 会执行隐式转换,且会按照 IEEE 754 标准对 NaN、-0 和 +0 进行特殊处理

  3. 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