【发布时间】:2011-10-19 03:02:22
【问题描述】:
我必须检查深度嵌套的对象属性,例如 YAHOO.Foo.Bar.xyz。
我目前使用的代码是
if (YAHOO && YAHOO.Foo && YAHOO.Foo.Bar && YAHOO.Foo.Bar.xyz) {
// operate on YAHOO.Foo.Bar.xyz
}
这可行,但看起来很笨拙。
有没有更好的方法来检查这种深度嵌套的属性?
【问题讨论】:
-
你不能只做
if (YAHOO.Foo.Bar.xyz)吗? -
@Michael,你不能只做
if (YAHOO.Foo.Bar.xyz),因为如果 Foo 或 Bar 不存在,那么if (YAHOO.Foo.Bar.xyz)会因为取消引用未定义的中间值而引发异常。 -
这可能是最好的检查方法;使用
try...catch会影响性能——当抛出异常时,代码会变慢。 jsPerf test. -
@Digital Plane - 但是,如果正常情况是它存在,那么 try/catch 比多重 if 测试(在 Chrome 中)快 19 倍。
标签: javascript properties