假設您有一個代表使用者的對象,並且您想要存取他們的地址。
過去,你可能做過這樣的事情:
const user = { name: "Alice", address: { street: "123 Main St" } }; const street = user.address && user.address.street; console.log('Street: ', street); // Output: 123 Main St
但是如果使用者物件沒有地址屬性或地址物件沒有街道屬性會發生什麼?
你會得到一個錯誤!
此運算子 (?.) 可讓您安全地存取巢狀屬性,如果鏈的任何部分遺失,則傳回 undefined。
例如:
const user = { name: "Bob" }; const street = user.address?.street; console.log('Street: ', street); // Output: undefined
看看程式碼有多簡潔?
預設值捍衛者。
現在,假設您想要為空或未定義的變數指派預設值。傳統上,您可能會使用 OR 運算子 (||)。但是,如果變數包含“假”值(例如 0 或空字串),這可能會導致意外行為。
為什麼有用:
let userSettings = null; // Imagine this comes from an API or user input // Without nullish coalescing: let theme = userSettings !== null && userSettings !== undefined ? userSettings.theme : 'light'; // With nullish coalescing: let theme = userSettings?.theme ?? 'light'; // If userSettings.theme is null or undefined, 'light' is used
在處理可選屬性或可能遺失的資料時特別方便。
可選連結和空值合併可協助您編寫更具可讀性、健全性和抗錯誤性的程式碼。
以上是可選連結和空合併的詳細內容。更多資訊請關注PHP中文網其他相關文章!