检查链接对象形式中未定义属性的最佳实践是什么

What is the best practice for checking undefined property in chained object form?

本文关键字:最佳 是什么 属性 未定义 对象 检查链接      更新时间:2024-05-12

假设我在单独的文件上实现a.b.c.d

因此,我需要检查a、b、c是否已定义,并在未定义这些属性时回退到catch子句。

目前,我正在使用此代码。但是它太长,太脏,很难维护。

try{
  if(!("a" in window)) {
    throw new Error();
  }
  if(!("b" in a)) {
    throw new Error();
  }
  if(!("c" in a.b)) {
    throw new Error();
  }
} catch(e){ }

最佳实践是什么?

在每种情况下,您都会手动抛出一个错误,但当您尝试访问undefined的属性时,其行为无论如何都是抛出ReferenceError,因此您可以捕获它:

try{
  a.b.c.d
} catch(e){ // Either a, a.b, or a.b.c was undefined }
if !(a && a.b && a.b.c && a.b.c.d) {
  throw new Error();
}
// else a.b.c.d exists