我有一段像这样的代码.这段代码有效,但看起来很糟糕.
if(typeof(d.object) != "undefined"){
if(typeof(d.object.property) != "undefined"){
if(typeof(d.object.property.length) != "undefined"){
// do the code
}
else alert("error");
}
else alert("error");
}
else alert("error");
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以重写,所以它做同样但更有效.特别是因为错误都是一样的.
假设你property对它的长度是否为null或者0(或者更常见的是由Jan Dvorak建议的"假")感兴趣,那么即使不使用try/catch以下内容,你也可以使它更具可读性:
if (d && d.object && d.object.property && d.object.property.length){
} else {
alert('error');
}
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这是要走的路.
关于来自MDN的"falsy" :
任何未定义的值,null,0,NaN或空字符串("")以及任何对象(包括值为false的Boolean对象)在传递给条件语句时计算结果为true