转自:https://www.cnblogs.com/chenmeng0818/p/5954215.html
1.对象和布尔比较
Object -- > String -- > Number,Boolean -- > Number
[] == false; //true []转为'',然后转为0,false转为0,0 == 0,所以true
2.对象和字符串比较
Object -- > String
[1, 2, 3] == '1,2,3' //true [1, 2, 3]转为'1,2,3','1,2,3' == '1,2,3',所以true
3.对象和数字比较
Object -- > String -- > Number
[1] == 1 //true [1]转为'1','1'转为1,1 == 1,所以true
4.字符串和对象比较
String -- > Number
'123' == 123 //true '123'转为123,123 == 123
5.字符串和布尔比较
String -- > Number,Boolean -- > Number
'1' == true //true '1'转为1,true转为1,1 == 1
6.布尔和数字比较
Boolean -- > Number
false == 0 //true false转为0,0 == 0
技巧如图:
比较特殊的:
[] == false; //true 按常规流程,最后比较0 == 0,所以true
![] == false; //true 因为有!,所以直接Object -- > Boolean,最后比较false == false,所以true
null == undefined //true 死规律,记住即可
NaN == NaN //false 死规律,记住即可