javascript - 如何处理未定义属性 javascript 类型错误的未定义属性?

标签 javascript error-handling typeerror

<分区>

考虑一个假设的例子:

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”?或者这就是所谓的似乎总是导致失败的“未捕获的类型错误”?

链接很重要,但这与上面提到的问题并不是同一个问题。我有自己的方法来测试嵌套对象,我的问题更多是关于如何在 javascript 中处理执行过程之外的类型错误,而不打扰这个错误,即返回 false,仅此而已。正如 Pointy\o/指出的那样,这实际上是不可能的,这就是我猜的答案。

最佳答案

您可以使用:

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.ao.a.b 为假,检查将失败

关于javascript - 如何处理未定义属性 javascript 类型错误的未定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750730/

相关文章:

c++ - 有错误的程序还能编译吗?

python - 函数正好接受 2 个参数(给定 1 个)

python - 类型错误 PYOMO : Defining constraints based on pandas dataframe

python - 为什么 __getattribute__ 失败并返回 : TypeError: 'NoneType' object is not callable

javascript - 使用 jquery .each() 增加 attr 值

javascript - 使用 Base64 编写 HTML5 二进制文件

visual-studio-2013 - 错误1无法将文件 “obj\Debug\SourceProject.exe”复制到“bin\Debug

javascript - 如何从具有数字的链接中删除下划线但在具有字母的普通链接上保留下划线

javascript - 如何验证可以将电子邮件作为用户名但也可以使用字母数字字符的用户名字段

c# - 当发生错误时,我们如何从ServiceStack的JSON Serializer访问数据?