javascript型別系統——布林Boolean型別

小火柴的藍色理想發表於2016-06-25

前面的話

  布林值Boolean型別可能是三種包裝物件Number、String和Boolean中最簡單的一種。NumberString物件擁有大量的例項屬性和方法,Boolean卻很少。從某種意義上說,為計算機設計程式就是與布林值打交道,作為最基本的事實,所有的電子電路只能識別和使用布林資料。本文將介紹布林Boolean型別

 

定義

  布林Boolean型別表示邏輯實體,它只有兩個值,保留字true和false,分別代表真和假這兩個狀態

  Boolean包裝型別是與布林值對應的引用型別,在布林表示式中使用Boolean物件容易造成誤解

var b1 = true;
var b2 = new Boolean(true);
console.log(b1,typeof b1);//true 'boolean'
console.log(b2,typeof b2);//Boolean{[[PrimitiveValue]]: true}  'object'
console.log(b1.valueOf(), typeof b1.valueOf());//true 'boolean'
console.log(b2.valueOf(), typeof b2.valueOf());//true 'boolean'

 

應用場景

  布林型別主要應用於如下場景:

  【1】條件和迴圈語句

  布林值主要應用於條件和迴圈語句的條件部分。比如,if語句中,如果布林值為true執行第一段邏輯,如果為false執行另一段邏輯。通常將一個建立布林值的比較直接與使用這個比較的語句結合在一起

if(a > 1){
    //條件為true時,執行此處
}else{
    //條件為false時,執行此處
}

  【2】邏輯運算子

  邏輯運算子又叫布林運算子。邏輯非運算子總是返回布林值,而邏輯或和邏輯與操作並非如此

  同時使用兩個邏輯非操作符,可以將型別轉換為布林型

console.log(!!1);//true
console.log(!!0);//false
console.log(!!' ');//true
console.log(!!'');//false

  【3】關係運算子

  關係運算子用於測試兩個值之間的關係,根據關係是否存在而返回true或false,關係表示式總是返回一個布林值,通常在if、while或for語句中使用關係表示式,用以控制程式的執行流程

console.log( 1 > 2);//false
console.log( 1 < 2);//true

 

轉為布林

  將一個值轉為布林值可使用Boolean()轉型函式

假值

  轉換成false的值稱為假值(falsy value),這7個值包括undefined、null、+0、-0、NaN、false、""(空字串)

console.log(Boolean(undefined));//false
console.log(Boolean(null));//false
console.log(Boolean(0));//false
console.log(Boolean(-0));//false
console.log(Boolean(NaN));//false
console.log(Boolean(''));//false
console.log(Boolean(false));//false

  [注意]在Number()方法中空字串和空白字串都轉換為0,而在Boolean方法中,空字串""轉換為false,而空白字串" "轉換為true

console.log(Number(''));//0
console.log(Number(' '));//0

console.log(Boolean(''));//false
console.log(Boolean(' '));//true

  除了這7個假值外,其他的值轉換為布林值都是true,也稱為真值(truthy value)

  [注意]所有物件(包括空物件)的轉換結果都是true,甚至連false對應的布林物件new Boolean(false)也是true

console.log(Boolean({}));//true
console.log(Boolean([]));//true

console.log(Boolean(new Boolean(false)));//true
console.log(Boolean(false));//false
console.log(Boolean(new Boolean(null)));//true
console.log(Boolean(null));//false

 

例項方法

  Boolean物件是與布林值對應的包裝型別,繼承了Object物件的通用方法toString()、toLocaleString()、valueOf()這三個方法

【toString()】

  toString()方法返回Boolean的字串值('true'或'false')

【toLocaleString()】

  toLocaleString()方法返回Boolean的字串值('true'或'false')

【valueOf()】

  valueOf()方法返回Boolean的原始布林值(true或false)

console.log(true.valueOf());//true
console.log(true.toString());//'true'
console.log(true.toLocaleString());//'true'

console.log((new Boolean(false)).valueOf());//false
console.log((new Boolean(false)).toString());//'false'
console.log((new Boolean(false)).toLocaleString());//'false'

 

參考資料

【1】 ES5/Boolean物件 https://www.w3.org/html/ig/zh/wiki/ES5/builtins
【2】 阮一峰Javascript標準參考教程——語法概述 http://javascript.ruanyifeng.com/
【3】 W3School-Javascript高階教程——Boolean物件 http://www.w3school.com.cn/
【4】《javascript權威指南(第6版)》第3章 型別、值和變數
【5】《javascript高階程式設計(第3版)》第3章 基本概念
【6】《javascript DOM程式設計藝術(第2版)》第2章 Javascript語法
【7】《javascript啟示錄》 第12章 Boolean()

 

相關文章