串聯運算子 (?.) 與 空值合併運算子 (??)

串聯運算子(?.), 也稱為 可選鏈運算子 (Optional Chaining Operator),用於在存取可能為null 或undefined 的屬性或呼叫可能為null 的方法時,避免程式碼出錯,它會在遇到null 或undefined 時停止運算並回傳undefined。 

空值合併運算子(??), 也稱為 Nullish Coalescing Operator,則用於在判斷值為null 或undefined 時,提供一個預設值。

串聯運算子(?.)

串聯運算子允許您安全地存取物件巢狀屬性或呼叫方法,如果屬性或方法是null 或undefined,則會短路並回傳undefined,而不會拋出錯誤。

範例:object?.property?.method()

作用:如果 object 為null 或undefined,則整個運算式會回傳undefined。 如果 object 存在但 property 為null 或undefined,則也會回傳undefined。

空值合併運算子(??)

空值合併運算子會檢查其左側的值是否為null 或undefined,如果是,則回傳右側的值;否則,就回傳左側的值。

範例:: value ?? defaultValue

作用:: 如果 value 是null 或undefined,則會回傳 defaultValue。

兩者結合使用

這兩個運算子經常一起使用,來處理可能為null 的物件,並提供預設值。

範例: user?.address?.city ?? 'Unknown'

作用:這個範例首先嘗試存取 user 物件的 address 屬性,然後嘗試存取 city 屬性。 如果任何一個鏈節為null 或undefined,則會使用預設值 'Unknown'。

總結

?. (可選鏈運算子):: 安全地存取可能為null 的屬性或方法。

?? (空值合併運算子):: 在值為null 或undefined 時提供預設值。

這兩個運算子是現代JavaScript 和TypeScript 中非常有用的工具,可以讓程式碼更簡潔、更安全。

留言

這個網誌中的熱門文章

Offscreen Canvas

外部網頁新增 Google 日曆行程(URL模板)

計算 Canvas 文字最大字體