例如,以下代码
if(obj.attr1.attr2.attr3.attr4 =='常量')返回;
需要重写为
如果(obj.attr1
&& obj.attr1.attr2
&& obj.attr1.attr2.attr3
&& obj.attr1.attr2.attr3.attr4 =='constant')返回;
我是否正确,因为每个层都需要单独进行测试,或者在语法上有捷径吗?
如果这只是一次尝试,就不会有问题,但是这种结构会渗透到我的代码中。
从答案中,这是我就地拥有的解决方案:
尝试{if(obj.attr1.attr2.attr3.attr4!='const')抛出'nada'; }抓住{e} {
nonblockAlert('相关消息');
返回;
};
这是可行的,因为为attr不存在而引发的错误是由本地throw()捕获的。问题是语法不适合常规的if否则else控件。
最佳答案
正如人们提到的,但没有人做过,您可以使用try / catch:
try {
if(obj.attr1.attr2.attr3.attr4 == 'constant') return;
} catch(e) {}
它不是有史以来最好的代码,但它是最简洁易读的代码。避免这种情况的最好方法就是不要将如此深的树嵌套得如此之深。