- 如果是
null == undefined
或undefined == null
, 则他们相等 -
如果一个是数字,一个是字符串,则先将字符串转为数字再进行比较
100 == '99';
实际上是分为两个步骤
// 第一步,先将 '99' 转为数字 100 == Number('99'); // 第二步, 进行比较,结果显然是 false 100 == 99;
如果字符串不能转换为正确的数字,则会返回
NaN
,NaN
和数字进行比较,将会按照第 5 个规则进行比较 -
如果其中一个值是
true
,则将true
转为1
。如果其中一个值是false
,则将false
转为0
。然后按照第 2 个规则进行比较
例如// 例一 true == 1; // 执行顺序如下 // 先将 true 转为 1, 结果便是进行如下比较 1 == 1; // 返回值自然就是 true // 例二 true == '2'; // 执行顺序如下 // 先将 true 转为 1 1 == '2'; // 再将 '2' 转为 2 1 == 2; // 返回值是 false
那么大家猜猜
true == 'true'
结果是什么呢? - 如果一个值是对象,另一个值是字符串或数字,则先将对象转为原始值在进行比较
- 其他不同类型之间比较,都返回
false
- 需要注意的是
NaN == NaN
, 也返回false