1. 程式人生 > >Js比較運算中的隱式轉換

Js比較運算中的隱式轉換

轉自: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    死規律,記住即可