可選鏈接運算符 (optional chaining operator) 是一個非常有用的運算符,我們可以用它來操作對象及其屬性或方法。

以前,你是否曾使用過 && 運算符作為備用方案呢?這是我最喜歡的 JavaScript 特性之一。

在 JavaScript 中,我們可以先檢查對象是否存在,然後嘗試獲取其屬性,就像這樣:

const car = null
const color = car && car.color

即使 car 為 null,也不會出現錯誤,color 將被賦予 null 的值。

你可以深入多層級:

const car = {}
const colorName = car && car.color && car.color.name

在其他一些語言中,使用 && 可能會返回 true 或 false,因為通常它是一個邏輯運算符。

但在 JavaScript 中不是這樣,這讓我們可以做一些很酷的事情。

現在這個新的可選鏈接運算符讓我們更加靈活:

const color = car?.color
const colorName = car?.color?.name

如果 car 為 null 或 undefined,結果將為 undefined。

不會出現錯誤(而使用 && 運算符時,如果 car 為 undefined,將出現 ReferenceError: car is not defined 錯誤)。