iT邦幫忙

2024 iThome 鐵人賽

DAY 23
1
佛心分享-IT 人自學之術

菜雞學習JavaScript的30日讀書分享系列 第 23

菜雞學習JavaScript的30日讀書分享【Day 23】邏輯運算子延伸

  • 分享至 

  • xImage
  •  

====================本系列文章沒有什麼高深的理論====================
====================純粹是以一個菜雞的視角來分享====================

邏輯運算子延伸

前面說到了AND &&OR ||分別代表了「且」跟「或」的意思,但是為什麼前面範例的結果不是truefalse呢?

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判斷式使用,所以也會讓人誤以為&&||只會回傳truefalse的結果。

今日的分享就到這囉,我們明天見,掰掰!


上一篇
菜雞學習JavaScript的30日讀書分享【Day 22】真值與假值
下一篇
菜雞學習JavaScript的30日讀書分享【Day 24】if...else流程判斷
系列文
菜雞學習JavaScript的30日讀書分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言