1、先看幾個現象:
從圖示的結果來看,我們會得出以下結論:
(1) “與運算符 &&“ 的目的或者說結果是返回第一個表達式或者變量為 false 的值,如果沒有,則返回最后一個表達式或者變量的值 。(遇假則停,以防報錯!!)
(2) “或運算符 || “ 的目的或者說結果是返回第一個表達式或者變量為 true的值,如果沒有,則返回最后一個表達式或者變量的值 。(遇假則走)
(3) “三目運算符“ 的目的或者說結果是其實和 “或運算符” 一樣 !
2、基於 &&運算符的效果
我們在項目中為了防止js 引擎拋出錯誤影響執行,經常會用到&& 運算符,比如 以下案例,最后的結果,如果firstName 為空,則返回default 。。
3、以上的寫法是不是感覺很麻煩啰嗦?
於是ES2020 提出了一種新的方法來代替這種寫法。
const firstName = message?.body?.user?.firstName || 'default'
看到沒,這里的 message?.body 代表message===undefined? message:
message.body 簡化了寫法!!!
還沒完,這里的 | | 也有替代方案 ?? 所以,繼續改良
const firstName = message?.body?.user?.firstName ?? 'default'
特別注意:?? 和 | | 效果類似,但是 區別在於 ?? 僅代表前面的表達式 是 null 或者undefined 才會 執行后面的表達式 。而 | | 則代表前面的表達式 是 null 或者undefined或者false 或者 0 才會執行后面的。