====================本系列文章沒有什麼高深的理論====================
====================純粹是以一個菜雞的視角來分享====================
前面說到了AND &&
跟OR ||
分別代表了「且」跟「或」的意思,但是為什麼前面範例的結果不是true
跟false
呢?
const cat = 456;
const dog = "dog";
const bear = null;
console.log(cat && dog); // "dog"
console.log(bear && cat); // null
console.log(cat || dog); // 456
console.log(bear || dog); // "dog"
console.log(bear || cat); // 456
簡單來說透過&&
或是\\
所產生的值不一定會是布林值(Boolean)
,而是兩者的其中之一。
&&
跟||
運算子在判斷時,會先以「左邊」的數值開始進行:
布林類型(Boolean)
就會再做後續的判斷。
ToBoolean
判斷是「falsy」或是「truthy」才轉換成對應的true
或是false
。
||
運算子來講,弱勢第一個數值轉換為true
,那麼就會回傳第一個數值,否則會回傳第二個數值。
&&
運算子來講,弱勢第一個數值轉換為true
,那麼就會回傳第二個數值,否則會回傳第一個數值。
在if的條件判斷中,JavaScript
會針對回傳的數值,再度做一次ToBoolean
的判斷是否為「falsy」或「truthy」,這也是為什麼在if判斷式
中,可以使用&&
跟||
的原因了,只是平常都會搭配if判斷式
使用,所以也會讓人誤以為&&
跟||
只會回傳true
跟false
的結果。
今日的分享就到這囉,我們明天見,掰掰!