iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 4
0
Modern Web

JavaScript Note系列 第 4

Boolean 布林

Boolean值,代表是(true)與否(false),Boolean型別也只有這兩種值。
https://ithelp.ithome.com.tw/upload/images/20181019/20112573vnfboackUh.png

在JavaScript中,任何值都可以轉為Boolean值。如果JavaScript預期運算結果為Boolean值,那它會想辦法把接收到的任何值轉為Boolean值。

Boolean
undefined false
null false
+0、-0、NaN false
非0數字 true
空字串 false
字串 true
物件 true

當一個值在boolean判斷中,其結果與true / false等值,但該值並非boolean型別,所以會稱該值為truthy / falsy值。
JavaScript會判斷該值的行為是truthy或falsy,再轉為boolean值。
假設我們要判斷變數x是物件或是null值,除了可使用if來明確測試該變數的值:

if(x!=null){

}else{
    
}

我們還可以利用If判斷式的結果不是true就是false的特性,將x直接傳入判斷式中,JavaScript自然會轉成boolean。

邏輯運算

AND(&&)
&&運算子只有在兩邊的運算元為true時,整個運算式的結果才為true。
只要有其中一個運算元為false,就回傳false。
它也可以當作關係運算式的運算子:x==0 && y==0。
&&運算子兩邊的運算元必須是boolean值,才能運算。
==的運算優先權大於&&,所以上面的範例,它會先運算x==0與y==0的結果,不是true就是false,之後,再進行&&的比較。
&&有個很重要的特性就是,如果第一個運算元是true,那整個運算式的結果會取決於第二個運算元,如果為true,運算式就回傳true,若否,則回傳false。
如果第一個運算元是false,它就不會再對第二個運算元做運算了,直接回傳false。
這樣的特性很常應用於下面的例子:

if (a == b) functionA();
//-----------------------
(a == b) && functionA();

這兩段程式碼都是同樣的效果,functionA( )會不會執行,取決於a==b的結果。
換個方式來說,如果第一個運算元能轉成false,就回傳它,不然,就回傳第二個運算元
https://ithelp.ithome.com.tw/upload/images/20181019/20112573HdkMfjXdDb.png
OR( || )
任一個運算元為true就回傳true,若全部的運算元為false則回傳false。
OR( || )的特性,若第一個運算元的值為true,接下來的運算元就不會運算了,直接回傳true。
若是false,那就會運算第二個運算元,若為true,回傳true,若為false,回傳false。
換句話說,如果第一個運算元能轉成true,就回傳它,不然,就回傳第2個運算元
https://ithelp.ithome.com.tw/upload/images/20181019/20112573X7rKqwF2sD.png
比較常見的應用是,假設一個回傳值是undefined或null的話,我們就給它預設的值,如果是預期的值,就直接使用:

function getValue(x) {
    x = x || '';
}

參考來源:
JavaScript大全
Speaking JavaScript|簡明完整的 JS 精要指南


上一篇
Number 數值
下一篇
NaN & Infinity
系列文
JavaScript Note31

尚未有邦友留言

立即登入留言