簡體   English   中英

尋找一種更簡單的方法來檢查對象中的多個屬性和方法是否未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM