写在前面
本文是对ECMAScript2020文档中的一些记录,地址放在这里
前置准备
JS中的数据类型
js中的数据类型包括Null、Undefined、Boolean、Number、String、Symbol以及Object
比较操作符
JS中提供两种比较操作符==和===,比较两个值x和y,即x == y或x === y会返回true或false
相等运算符 ==
当使用相等运算符==比较两个值时,会按照如下规则返回true或者false
- 当
x和y类型相同时,返回严格相等的结果x === y - 如果
x是null并且y是undefined,返回true - 如果
x是undefined并且y是null,返回true - 如果
x是Number类型,y是String类型,返回x == ToNumber(y)的结果 - 如果
x是String类型,y是Number类型,返回ToNumber(x) == y的结果 - 如果
x是BigInt类型,y是String类型- 把
StringToBigInt(y)的值赋给n - 如果
n是NaN返回false - 返回
x == n
- 把
- 如果
x是String类型,y是BigInt类型,返回y == x - 如果
x是Boolean类型,返回ToNumber(x) == y - 如果
y是Boolean类型,返回x == ToNumber(y) - 如果
x是String、Number、BigInt、Symbol中的任意一个,并且y是Object类型,返回x == ToPrimitive(y) - 如果
x是Object类型,并且是String、Number、BigInt、Symbol中的任意一个,返回ToPrimitive(x) == y - 如果
x是BigInt,y是Number类型或者x是Number类型,y是BigInt- 如果
x或y任意一个是Nan、+∞或-∞,返回false - 如果
x和y的数学值相等返回true否则返回false
- 如果
- 不是以上情况,返回
false
严格相等运算符 ===
- 如果
x和y的类型不同,返回false - 如果
x是Number或BigInt,判断x和y是否数值相等 - 返回SameValueNonNumeric(
x,y)