1. Undefined 、Null、0 比较
null == null; // true
null == undefined; // true
+0 == -0; // true
null == 0; // false
undefined == 0; // false
2. NaN 比较
NaN == NaN; // false NaN与任何值比较都返回false(包括NaN)
3. 字符串 与 数字 比较
'5' == 5; // true 字符串 '5' 转换 为 数字 5 进行比较
4. 布尔值 与 非布尔值 比较
true == 1; // true 布尔值 true 转换 为 数字 1 进行比较
false == '123'; // false 布尔值 false 转换 为 数字 0 与 字符串 '123' 转换 为 数字 123 进行比较
5.[] == ![] 为甚返回 true ?
经过!
运算将等式右边转换成了 false
。
[] == false
接着,根据==
隐式转换规则,等式两边为对象和布尔,那么它们都应该转换为数字进行比较,左侧[]
经过ToPrimitive
转换为字符串""
。
"" == false
然后,将等号两边的字符串""
和布尔值false
转换都成数字 0
。
0 == 0
所以,返回 true。