一、if判断
if(条件){语句}
判断条件会强制转换成布尔类型
| 类型 | 结果 |
|---|---|
| undefined | false |
| null | false |
| Boolean | 直接判断 |
| number | +0,-0或者 NaN位false,其余为true |
| string | 空字符串为false,其余为true |
| object | true |
○ 注意:
- 空白字符串
" "也为true, -
[]空的数组也是对象,因此是true
二、 ==的判断
x==y
| x | y | 结果 |
|---|---|---|
| null | undefined | true |
| Number | String | x==toNumber(y) |
| Boolean | (any) | toNumber(x)==y |
| Object | String or Number | to Primitive(x)==y |
| otherwise | otherwise | false |
==先往数字上转换,然后再判断
toNumber
| type | Result |
|---|---|
| Undefined | NaN |
| Null | 0 |
| Boolean | ture=>1,false=>0 |
| String | "abc"=>NaN,"123"=>123 |
toPrimitive
对于Object类型,先尝试调用.valueOf方法获取结果,如果没定义,再尝试调用.toString方法获取结果
○ 注意:
-
" "转数字是0, -
" "转布尔是true, -
!'' ''有!先转换成布尔类型,再转数字
● ● ●