if()表达式和==原理
if()
if(1) // true ---> if(Boolean(1))
if(undefined) // fasle
if({}) // true
if([]) // true ---> if(Boolean([]))
if()
里,其实就是执行Boolan()方法。
==
1 == true // true
2 == true // false ---> Number(2) == Number(true) ---> 2 == 1
[1] == true // true
==
,本质是执行Number()
方法。
Boolean()
类型 | 值 | Boolean() |
---|---|---|
undefined | undefined | false |
null | null | false |
string | ‘’ | false |
string | ‘0’ | true |
number | 0 | false |
number | 1 | true |
boolean | false | false |
boolean | true | true |
object | {} | true |
object | {num:0} | true |
object | [] | true |
object | [0] | true |
总结:
- undefined、null都为false。
- 字符串只有’'为false。
- 数值类型只有0为false。
- 引用数据类型都为true。
- 布尔类型看本身。
Number()
类型 | 值 | Number() |
---|---|---|
undefined | undefined | NaN |
null | null | 0 |
string | ‘’ | 0 |
string | ‘0’ | 0 |
string | ‘1’ | 1 |
string | ‘1a’ | NaN |
number | 0 | 0 |
number | 1 | 1 |
boolean | false | 0 |
boolean | true | 1 |
object | {} | NaN |
object | {num:0} | NaN |
object | [] | 0 |
object | [0] | 0 |
object | [0,1] | NaN |
总结:
- undefined为NaN。
- null为0。
- 字符类型长度为0必为0。长度不为0看value是否包含非数字,不包含就是去掉引号后的值。否则NaN。
- 数值类型保持原值。
- 布尔类型true为1,false为0。
- 引用数据类型。
- 对象{}为NaN。
- 数组长度为0即为0。长度为1则转那一个数值,长度大于1则NaN。