检查下一个表达式之前数据是否存在的最佳方法是什么?例如,如果我有一个像这样的对象:
test = {
"CompanyData": {
"Address": {
"RegisteredAddress": {
"Country": null,
"City": null,
"Street": null
}
}
}
}
也可能是:
test = {
"CompanyData": null
}
我需要检查国家/地区是否为“xyz”。
最好的方法是什么?例如:
if (test.CompanyData && test.CompanyData.Address && test.CompanyData.RegisteredAddress){...}
try { if (test.CompanyData.Address.RegisteredAddress.Country == "xyz") {...}} ... catch(){}
所有选项都可以正常工作,但在我看来它们不是最佳实践。
最简洁、最有争议、最惯用的方法是使用 可选链接运算符 (
?.
):
if (test?.CompanyData?.Address?.RegisteredAddress?.Country === 'xyz') {
// ...
}