[英]Looking for a simpler way to check if multiple properties & methods in an object are undefined
考慮以下代碼:
if(eform[funcName] !== undefined){
if(eform[funcName].init !== undefined){
//finally do something
}
}
我首先檢查eform
對象是否具有變量funcName
指定的屬性。 如果是,那么我需要檢查該屬性是否具有init
方法。
有沒有辦法將這些組合成一個if
語句? 或者也許有比這更優雅的東西?
使用短路評估:
if (eform[funcName] !== undefined && eform[funcName].init !== undefined)
如果eform[funcName]
未定義,則語句 if false 和eform[funcName].init
永遠不會被檢查。 根據偏好/可讀性,以下內容也有效:
if (eform[funcName] && eform[funcName].init)
認為一個更好:
if(eform[funcName] !== undefined && eform[funcName].init !== undefined){
//some code
}
如果第一個條件為假,則不會檢查第二個條件。
JS 有一種新的、優雅的方式來實現這一點—— 可選鏈操作符
它看起來像這樣:
if (eform?[funcName]?.init !== undefined) {
// do something
}
適用於所有現代瀏覽器。 但是 babel 還沒有在本地添加對這個 op 的支持並拋出一個編譯錯誤。 在這種情況下,babel 建議:
將 @babel/plugin-proposal-optional-chaining ( https://git.io/vb4Sk ) 添加到 Babel 配置的“插件”部分以啟用轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.