基本值(原始值)
原始的布尔类型boolean有两个值: false 和 true。
> typeof false
'boolean'
> typeof true
'boolean'
创建布尔值的方式
1、直接用字面量
var a = false;
var b = true;
2、用Boolean函数,将其他任意值转换成对应的原始布尔值。
> a = Boolean()
false
> a = Boolean(true)
true
布尔类型与其他类型之间的转换
其他类型值转换成布尔值的对应关系
其他类型值 转换成的布尔值
- undefined => false
- null => false
- 布尔值 =>不用转换
- 数字 => 0,NaN转化成false,其他数字类型转换成true
- 字符串 => 只有空字符串’'转换成false,其他都转换成true
- 对象 =>全部转换为true
根据上表可总结为,js中五中基本数据类型undefined、null、布尔型、数字和字符串,外加对象共六中类型中,只有undefined、null、布尔值中的false、数字中的0和NaN,和字符串中的空字符串’’,共计6种值被转换成false, 其余的都被转换成true。
被转换成false的集合叫假值,被转换成true的集合就真值。
由上可知,以下为假值。
- undefined, null
- false
- 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