操作符两边操作数先转换数据类型,然后再比较它们的相等性,具体的规则如下:
操作符a的数据类型 | 操作符b的数据类型 | == | != | 备注 |
---|---|---|---|---|
Boolean转为Number | —— | —— | —— | Boolean无条件转为Number类型 |
String转为Number | Number | —— | —— | —— |
Object转为a.valueOf() | 除了Object之外的所有类型 | —— | —— | —— |
null | undefined | true | false | null等于underfined |
NaN | —— | false | true | NaN不等于NaN |
Object | Object | —— | —— | 如果a和b指向同一个对象,相等操作符返回true,否则返回false |
上述表格归纳自javascript高级程序设计,[p51-p53]