原始的布尔类型boolean
有两个值: false
和 true
。函数
> typeof false 'boolean' > typeof true 'boolean'
直接用字面量code
var a = false; var b = true;
用Boolean函数,将其余任意值转换成对应的原始布尔值。对象
> a = Boolean() false > a = Boolean(true) true
对应关系表以下所示:ip
其余类型值 | 转换成的布尔值 |
---|---|
undefined |
false |
null |
false |
布尔值 | 不用转换 |
数字 | 0 ,NaN 转化成false ,其余数字类型转换成true |
字符串 | 只有空字符串'' 转换成false ,其余都转换成true |
对象 | 所有转换为true |
根据上表可总结为,js中五中基本数据类型undefined、null、布尔型、数字和字符串,外加对象共六中类型中,只有undefined
、null
、布尔值中的false
、数字中的0
和NaN
,和字符串中的空字符串''
,共计6
种值被转换成false
, 其他的都被转换成true
。字符串
被转换成false
的集合叫假值,被转换成true
的集合就真值。
由上可知,如下为假值。table
undefined, null变量
falseobject
0, NaN构造函数
''数据类型
全部其余的值,包括对象等都是真值。
由于undefined
和null
都是假值,因此咱们一般用于判断一个变量x
是否有值
,
if (x){ // x 有值 }else{ // x 无值 }
须要注意,上述判断会把全部的假值解释成“没有值”,而不单单是undefined
和null
.
如当x= 0
时,上述判断会认为x
没有值,实际上x
是有值的,且为0
.
因此上述判断要谨慎使用。
javscript中,凡是须要布尔值的地方,均可以提供任意类型的值,它们会自动被转化成相应的布尔值。例如条件表达式或逻辑表达式中。
手动将其余类型的值转换成布尔值有如下三种方法
1. Boolean(value) //使用Boolean函数,此处做为一个普通函数被调用,而不是构造函数。 2. value ? true : false 3. !! value //使用两次非运算符,将其转换成对应的布尔类型。
三种方法都很经常使用,其中最好使用Boolean(value)
这个方法,直观又方便。
下面来看一些将其余类型转换成布尔类型的例子。
undefined
> Boolean(undefined) false
null
> Boolean(null) false
boolean
> Boolean(false) false > Boolean(true) true
数字
> Boolean(0) false > Boolean(133) true > Boolean(NaN) false
字符串
> Boolean('') false > Boolean('dd') true > Boolean(' ') //注意,空格字符串不是空字符 true > Boolean('false') true
对象
所用的对象都转化成 true.
> Boolean([]) true > Boolean({}) true > Boolean(new Boolean(false)) //new Boolean(false)获得是一个boolean型object. true > Boolean(new Number(0)) //同上 true > Boolean(new String('')) //同上 true