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)