在JavaScript中,宽松相等的规则如下:
x == y;
若x、y其中之一为数字,另一个为字符串,则把字符串转换成数字类型,Number(x) == y;
若x、y为布尔值时,把布尔值转换成数字类型,Number(x) == y;
undefined == null; 除此之外其他值与undefined、null相比结果为false
若 x 为对象,y 为数字或字符串时,则返回ToPrimitive(x) == y的结果
// 0 == "" 的原因
// 0 == "" --> 0 == Number(""); --> 0 == 0
// 0 == [] --> 0 == [].toString(); --> 0 == ""
// ToNumber会把""、" "、"n"转换为0
0 == "";// true
0 == [];// true
0 == "n";// true
'