【问题标题】:How to detect Reference Errors in Javascript where Undefined doesn't work?如何检测未定义不起作用的Javascript中的引用错误?
【发布时间】:2013-06-23 16:44:50
【问题描述】:
typeof(nonexistingobj)

返回“未定义”但

typeof(nonexistingobj.nonexistentproperty) 

不会像我预期的那样生成“未定义”,而是称为Reference Error - 我如何检测到这个?

我正在尝试对来自 API 的响应进行子属性检测。 (具体来说,当需要获取另一页 API 结果时,API 返回一个名为 data.paging.next 的子对象,但如果只返回最后一页,则没有“下一个”子对象)。

【问题讨论】:

  • 尝试引用不存在的对象上的属性时会出现 ReferenceError。所以在你的情况下,obj 不存在(所以它是未定义的)。您可以通过检查"undefined" === typeof(obj) 检测到这一点
  • typeof 是一个运算符,而不是一个函数。你可以像 typeof obj.nonexistentproperty 一样使用它。
  • 您可以通过将调用包装在 try-catch statement 中来检测 ReferenceError

标签: javascript node.js error-handling referenceerror


【解决方案1】:

不要尝试访问undefined 的属性。测试您尝试访问的变量是否先定义。

if (typeof obj !== "undefined") {
    typeof obj.nonexistentproperty;
} 

【讨论】:

  • 啊啊啊,就是这样。谢谢。
【解决方案2】:

要捕获错误,您可以使用 try/catch:

try {
     console.log(typeof nonexistingobj.nonexistentproperty);
} catch (error) {
     console.log('Message error: ' + error.message);
}

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 2013-04-10
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多