!
如果操作数是一个对象 | 返回false |
如果操作数是一个空字符串 | 返回true |
如果操作数是一个非空字符串 | 返回false |
如果操作数是0 | 返回true |
如果操作数是非0 | 返回false |
如果操作数是null | 返回true |
如果操作数是NaN | 返回true |
如果操作数是undefined | 返回true |
+
加数 | 加数 | 结果 |
NaN | NaN | |
Infinity | Infinity | Infinity |
-Infinity | -Infinity | -Infinity |
Infinity | -Infinity | NaN |
+0 | +0 | +0 |
-0 | -0 | -0 |
+0 | -0 | +0 |
字符串 | 字符串 | 字符串 |
字符串 | 转为字符串 | 字符串 |
字符串 | 对象、数值、布尔.toString() | 字符串 |
字符串 | String(undefined、null) | 字符串 |
数字 | null | 数字 |
数字 | undefined | NaN |
数字 | 布尔 | 数字 |
数字 | Symbol() | 报错 |
数字 | 对象 | 分情况 |
==
如果一个操作数是布尔值 | 先将其转换为数值 |
如果一个操作数是字符串,另一个是数字 | 先将字符串转为数值 |
如果一个操作数是对象,另一个操作数不是 | 先调用对象的valueOf() |
NaN == NaN | false |
'NaN' == NaN | false |
NaN == 5 | false |
null == undefined | true |
null == 0 | false |
undefined | false |