[javascript] 雙問號運算子 nullish coalescing operator

?? (nullish coalescing operator)

用法

// pseudocode,大概示意,非完整 code
const items = ["abc", "", 123, 0, true, false, null, undefined];
{items.map(item => {
  return (
    {`${item} ?? '找不到 item'`}
  );
})}

結果圖

情境

有一個 data 回傳值如下,且 true、false 在程式內都可能用到
data: { isTeacher: false }

如果預設值為 false,那使用 || 或是 ?? 都是沒有問題
data.isTeacher || false  //output: false
data.isTeacher ?? false  //output: false

但如果預設值為 true,那這時候使用 ?? 才會正確,或是用 || 並配合額外處理的 code
data.isTeacher || true  //output: true
data.isTeacher ?? true  //output: false


|| (or operator)

用法

// pseudocode,大概示意,非完整 code
const items = ["abc", "", 123, 0, true, false, null, undefined];
{items.map(item => {
  return (
    {`${item} || '找不到 item'`}
  );
})}

結果圖

情境

|| 就大部分情況都在使用,像回傳值為 undefined,就直接使用「 data.count || 0 」,就能得到 0 此預設值。






留言

這個網誌中的熱門文章

[日文] Google日文輸入法 簡單安裝說明

[面試] 日月光 設備工程師

[Windows] 還我 win7 相片檢視器!!