数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | ""空字符串 |
Number | 任何非0数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a | undefined |
数组属于对象类型,所以空的数组转换成布尔型是true
相同的是,空的对象转换成布尔型也是true
1.
空数组[]和空对象{}都是object类型,因此直接用于if判断条件时就会被转化为true。
2.
任意值与布尔值比较,都会将两边的值转化为Number。
注意:
如果将空数组[]与布尔值false比较,false转化为0,而空数组[]也转化为0,因此[] == false的判断得到true。
如果将空对象{}与布尔值false比较,false转化为0,而空对象{}转化为NaN,由于NaN与任何数都不相等,因此{} == false的判断得到false。