Js比較運算中的隱式轉換
阿新 • • 發佈:2019-01-24
轉自: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 死規律,記住即可