原始的布爾類型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