考虑一个假设的例子:
var r = function (o) {
try { o.a.b }
catch (e){}
};
var o={};
r(o.a.b);
console.log('aaaa');
//TypeError: o.a is undefined
有没有办法处理这种错误并显示" aaaa"尽管如此?或者这被称为"未被捕获的类型错误"这似乎总会导致失败?
Ty的链接,但它与上面提到的问题不是真的相同。我有自己的方法来测试嵌套对象,我的问题更多的是如何在javascript中处理执行过程之外的类型错误,而不会打扰这个,即返回false和全部。正如Pointy指出的那样,这真的不可能,这就是我猜的答案。
答案 0 :(得分:2)
您可以使用:
if(o.a) {
r(o.a.b);
} else {
//handle error
}
console.log('aaaa');
检查属性是否存在。如果您还需要检查o.a.b
是否存在,只需扩展if:
if(o.a && o.a.b) {
r(o.a.b);
} else {
//handle error
}
console.log('aaaa');
这些if
正在检查是否存在,但也会标记错误值 - 因此如果o.a
或o.a.b
为false,则检查将失败