奇怪的語法,`?.` 在 JavaScript 中是什麼意思?


讓我們嘗試透過一個例子來理解‘?.’。

考慮以下物件示例,描述了一個 23 歲的男性人類 −

const being = {
   human: {
      male: {
         age: 23
      }
   }
};

現在讓我們假設我們要訪問這個 being 物件的 age 屬性。很簡單,對吧?我們只需使用鏈式操作來訪問,就像下面的程式碼一樣 −

示例

const being = {
   human: {
      male: {
         age: 23
      }
   }
};
console.log(being.human.male.age);

輸出

控制檯輸出如下 −

23

現在假設出於某些技術原因,你將 being物件的 male 屬性更改為 female 或其他內容。

現在,我們的鏈式語句會發生什麼,它將產生一個 typeError,指出無法訪問 human 的未定義屬性。在這種情況下,有沒有辦法讓我們的程式碼不丟擲任何錯誤。是的,這正是‘?.’也就是可選連結來拯救我們的地方。

可選鏈式非常簡單,在正常情況下它表現得像正常的鏈式,但是當我們嘗試訪問未定義的任何屬性時,它不會讓我們的程式碼丟擲一個錯誤,而是立即終止鏈式並返回未定義,以便剩下的程式碼塊正常執行。

考慮我們上一個例子(可選鏈式) −

示例

const being = {
   human: {
      male: {
         age: 23
      }
   }
}
console.log(being?.human?.female?.age);

輸出

輸出不會丟擲錯誤,而是 −

undefined

更新於:18-8-2020

1000+ 瀏覽次數

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告