串聯運算子 (?.) 與 空值合併運算子 (??)
串聯運算子(?.), 也稱為 可選鏈運算子 (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 中非常有用的工具,可以讓程式碼更簡潔、更安全。
留言
張貼留言