TypeError 和 ReferenceError

文章是本人大三期间的学习笔记,一些论断取自书籍和网上博客,碍于当时的技术水平有一些写得不够好的地方,可以在评论处理智讨论~

ECAM-262中定义了7种错误类型,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError。

其中 TypeErrorReferenceError 是经常会碰到的错误类型,在这里我们进行一个比较。

差异在哪里


TypeError

例如:

var a;
console.log(a.b);

这时会报 Uncaught TypeError: Cannot read property 'b' of undefined
变量 a 存在,但是想要操作的 b 属性不存在。

ReferenceError

例如:

console.log(b);

这是会报 Uncaught ReferenceError: b is not defined

这里对 b 进行 RHS查询,在所有嵌套作用域中遍寻不到所需的变量,引擎会抛出 ReferenceError异常。(详情可移步 JavaScript中的LHS和RHS查询)。

小结

ReferenceError 同作用域判别失败相关,而 TypeError 则代表作用域判别成功了,但是对结果的操作是非法或者不合理的。

你可能感兴趣的:(js/jq)