iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
自我挑戰組

JS漫遊記系列 第 13

JS漫遊記-13-短路特性

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20240825/20166952xSdgFu6FjR.jpg

早安安~午安安~
今天又是在清大讀書的一個零碎的時間
最近多工到一天要處理好多的事情-學習、工作、讀書、運動、煮飯、讀經。
應該要來好好學習如何把效率提升了!
希望大家在生活的忙碌時刻,也不要忘記照顧自己的身心嘿(開啟老媽模式XD)


那今天要提到的是昨天說的短路特性
這塊說真的我到現在才聽過這名詞~

前情提要&重要事項

  1. 0、""、false、null、undefined和NaN都會是false(falsy)
    2.今天會提到的重點是
    • 條件?值1:值2(三元一次運算式)
    • ?? (空值合併運算子)
    • 短路求值(Short-circuit evaluation)- &&跟||

短路求值(Short-circuit evaluation)
邏輯運算中一種有效的技術,它能夠提高效率,避免不必要的計算,並且在某些情況下防止錯誤。
透過使用 && 和 || 運算符的短路特性,可以使代碼更為簡潔和健壯。
看了一些文章後,我的解讀是這個求值的部分,取得了原本要寫的if判斷式


||設定預設值
|| 在處理任何類型的值時,當它遇到第一個真值時,它會立即返回那個值,而不再評估後面的值。

let a = true;
let b = false;
console.log(a || b); //印出true
//解釋:因為 a 是 true,所以 b 不會被評估,結果為 true。

let a =false; 
let b =true;
console.log(a || b)//印出true
//解釋:因為左邊是 false(或其他假值),則會印出右邊的-true

看了一些文章後,才發現真的比起還要寫if判斷式,我們還是寫||來得快唷~

let a = true;
let b = false;

if (a || b) {
    console.log('至少有一個為 true');//印出:至少有一個為 true
}

&& 檢查物件屬性是否存在
&&的規則是如果第一個條件成立,才會繼續執行後面的程式碼~

let obj = {
    name: 'Alice'
};

// 檢查 obj.name 是否存在,如果存在則執行後面的操作
obj.name && console.log('Name exists:', obj.name);//印出Name exists: Alice

let obj = {
    age: 25 
};

obj.age && console.log('Age exists:', obj.age);
//印出Age exists: 25//obj.age 是真值,所以會執行console.log

?? (空值合併運算子)
處理遇到null 和 undefined的情況!那這個運算子的作用就是返回第一個非null跟undefined的值。

let result = value1 ?? value2;
如果 value1 不是 null 或 undefined,則 result 的值是 value1。
否則,result 的值是 value2。
let userInput = null;
let defaultInput = 'Default Value';

let finalValue = userInput ?? defaultInput;
console.log(finalValue); // 輸出 'Default Value'

userInput 是 null,所以 ?? 運算符會選擇 defaultInput 的值。

條件?值1:值2(三元一次運算式)
condition ? exprIfTrue : exprIfFalse

一個條件後面會跟著一個問號 (?),如果條件是 truthy,在冒號(:)前的表達式會被執行(exprIfTrue執行),如果條件是 falsy,在冒號後面的表達式會被執行(exprIfFalse執行)

let age = 21;
let status = age >= 18 ? 'Adult' : 'Minor';
console.log(status); // 輸出 'Adult'

age >= 18 的結果為 true
因此,status 的值是 'Adult'

我是超級新手,若有任何建議或是錯誤的部分,歡迎底下留言唷thanks
我們下篇文章見掰掰~

對自己多用點心,日益努力,而後風生水起。盡情玩耍,盡情學習,盡情熱愛,盡情討厭,在需要的時候釋放善意,在必要的時候展現強硬,把這不得不過完的一生,變成值得慶賀的一生。


上一篇
JS漫遊記-12-邏輯運算子
下一篇
JS漫遊記-14-賦值運算子&算術運算子
系列文
JS漫遊記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
davidchen0117
iT邦新手 4 級 ‧ 2024-08-27 17:32:46

謝謝分享!

QQ 覺得感動~!!!
謝謝你的留言唷~
之後也請多指教/images/emoticon/emoticon07.gif

我要留言

立即登入留言