JavaScript中的相等比较
在js中,x==y
和x===y
都会比较x、y两个值的相等性,并返回true
或false
,二者遵循以下规则:
1.==
- 如果x和y的类型相同,则会返回
x===y
的结果 - 如果x为
null
而y为undefined
,则返回true
- 如果x为
undefined
而y为null
,则返回true
- 如果x类型为
Number
,y类型为String
,则会返回x==Number(y)
- 如果x类型为
String
,y类型为Number
,则会返回Number(x)==y
- 如果x为布尔值,则返回
Number(x)==y
- 如果y为布尔值,则返回
x==Number(y)
- 如果x类型为
String
、Number
和Symbol类型之一,y类型为Object
,则返回x==ToPrimitive(y)
- 如果x类型为
Object
,y类型为String
、Number
和Symbol
类型之一,则返回ToPrimitive(x) == y
- 其他情况,返回
false
2.===
- 如果x和y的类型不同,则返回false
- 如果x类型为
Number
,则- 如果x为
NaN
则返回false
- 如果y为
NaN
则返回false
- 如果如果x和y为相等的数值,则返回
true
- 如果x为
+0
,y为-0
,则返回true
- 如果x为
-0
,y为+0
,则返回true
- 其他情况返回
false
- 如果x为
- 其他情况返回SameValueNonNumber(x, y)