JavaScript - 更高效的检查对象 - 如果...否则或尝试...catch [复制]

JavaScript - more efficient checking object - if...else or try...catch [duplicate]

提问人:Adam 提问时间:11/6/2023 最后编辑:VLAZAdam 更新时间:11/6/2023 访问量:58

问:

在下一个表达式之前检查数据是否存在的最佳方法是什么?例如,如果我有一个对象,例如:

test = {
    "CompanyData": {
        "Address": {
            "RegisteredAddress": {
                "Country": null,
                "City": null,
                "Street": null
            }
        }
    }
}

可能的还有:

test = {
    "CompanyData": null
}

我需要检查国家是否为“xyz”。

最好的方法是什么?例如:

  1. if (test.CompanyData && test.CompanyData.Address && test.CompanyData.RegisteredAddress){...}
  2. 一些外部函数,用于检查键是否在对象中
  3. try { if (test.CompanyData.Address.RegisteredAddress.Country == "xyz") {...}} ... catch(){}

所有选项都很好用,但在我看来它们不是最佳实践。

javascript if 语句 try-catch

评论

1赞 VLAZ 11/6/2023
如果要处理错误,请使用。不要将它用于流量控制,在流量控制中,您故意诱发错误只是为了进入块。改用 /,因为这是您有效地重新创建的内容,但有错误。try/catchcatchifelse
1赞 Bergi 11/6/2023
catch(){}是一个非常糟糕的主意

答:

4赞 Robby Cornelissen 11/6/2023 #1

最简洁、最有争议、最惯用的方法是使用可选的链接运算符 ():?.

if (test?.CompanyData?.Address?.RegisteredAddress?.Country === 'xyz') {
  // ...
}