让我们说我在单独的文件中实施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){ }
最佳做法是什么?
答案 0 :(得分:1)
您在每种情况下手动抛出错误,但是当您尝试访问undefined
属性时的行为是抛出ReferenceError,所以您可以抓住它:< / p>
try{
a.b.c.d
} catch(e){ // Either a, a.b, or a.b.c was undefined }
答案 1 :(得分:-2)
if !(a && a.b && a.b.c && a.b.c.d) {
throw new Error();
}
// else a.b.c.d exists