JavaScript 可選鏈接

可選鏈接運算符 (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 錯誤)。

JavaScript 空值合併

JavaScript中一個強大的運算子是 空值合併 運算子: ??。 您是否曾經使用 || 來在變數為空或未定義時設置默認值? 例如,像這樣: const myColor = color || 'red' 而現在,空值合併將取代其中的 ||: const myColor = color ?? 'red' 這個運算子有什麼用處呢? 當使用 || 提供回退值時,實際上存在著一系列隱藏的錯誤。 簡單來說,|| 將值處理為假值,而 ?? 則將值處理為空值(因此得名)。 這意味著使用 ||,如果第一個操作數為 undefined、null、false、0、NaN 或 '',則會對第二個操作數進行評估。 而??則只將此列表限制為undefined和 null。