问题:
if([0])console.log(1) // ture
if([0]==true)console.log(1) // false
if("0")console.log(1) // ture
if("0"==true)console.log(1) // false
解答:
-
if(condition)
javascript
在做if(condition)
判断的时候会把condition
转换成boolean
然后做判断,[0]
是一个有值的list,所以转成boolean
是true
。[0] -> true;
-
比较操作
javascript
在做A == B
的比较时,如果A
和B
的type
不一样,会先把A
和B
转化成相同的type
,通常是number
,然后再作比较。[0] == true; //会分成以下步骤进行 //把true转化成number,true变成1 [0]==true -> [0]==1 //list是object //先看[0].valueOf(),结果还是[0] //再看[0].toString(),结果是“0” type是string [0]==1 -> "0" == 1 //把"0"转化成number,"0"变成0,0不等于1 0 == 1 //结果是false
其它例子
if("0")console.log(1) // true
if("0"==true)console.log(1) // false
if("1"==true)console.log(1) // true