【发布时间】:2019-07-09 23:14:50
【问题描述】:
目前我(在项目的许多地方)检查数据是否存在于一个对象的根级别,只是为了查看下一层是否存在,只是为了查看下一层等等。
这可能看起来像这样:
let name = display.data ? display.data ? data.name.bio ? data.name.bio.details ? :"Name N/A" : "Name N/A" : "Name N/A" : "Name N/A"
有没有一种方法可以直接调用data.name.bio.details,而不是通过这种方式进行检查,这不会引发错误,但会默默地退回到未定义状态?
例如如果我打电话给data.name.bio.details 并且data.name.bio 不存在,我会收到一个错误提示,而且它不是那么安静。
我可以做这样的事情吗?当 .bio 不存在时,不会尖叫血腥谋杀?:
var name = data.name.bio.details || "Name N/A"
希望这是有道理的,不确定是否有更好的方法!
【问题讨论】:
-
如果对象存在并且它是一个对象属性,你可以像
if(obj.prop === undefined){ /* not defined */}那样做。如果 var 是一个参数或使用var、let或const声明,您也可以简单地测试=== undefined。如果没有任何声明,您应该像if(typeof yourVar === 'undefined'){ /* not defined */ }那样做。最后一种方式适用于所有情况。当然,请注意,如果您的对象未定义,那么if(typeof obj.prop === 'undefined'){}会在 obj 上抛出未定义的错误。
标签: javascript reactjs object