
- x不是正常值,中断执行
- y不是正常值,中断执行
- 如果x和y的类型相同,返回执行严格相等比较运算的结果
- x是null,y是undefined,返回true
- x是undefined,y是null,返回true
- x的类型是Number,y的类型是String,把y转换成Number后进行比较
- x的类型是String,y的类型是Number,把x转换成Number后进行比较
- x的类型是Boolean,把x转换成Number后进行比较
- y的类型是Boolean,把y转换成Number后进行比较
- x的类型是String、Number或Symbol,y的类型是Object,把y转换成基元类型(ToPrimitive)后进行比较
- x的类型是Object,y的类型是String、Number或Symbol,把x转换成基元类型后进行比较
- 返回false
总结一下:
- x、y有一方不是正常值,中断执行
- x、y类型相同,按照严格相等比较
- x、y有一方为null,另一方为undefined,返回true
- x、y有一方为Number,另一方为String,把String转换成Number,然后比较
- x、y有一方为Boolean,把Boolean转换成Number,然后比较
- x、y有一方是Object,另一方是String、Number、Symbol,把Object转换成基元类型,然后比较
- 返回false
按照上面的说法,如果true == {},会先把true转换成Number,后把{}转换成基元类型,最终比较的应该是1 == NaN
发表回复