判断
2018-06-21 本文已影响0人
真的吗_a951
一、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, -
!'' ''
有!
先转换成布尔类型,再转数字
● ● ●