Error实例对象是最一般的错误类型,在它的基础上,JavaScript还定义了其他6种错误对象,也就是,存在的6个派生对象。
1.1 SyntaxError对象
SyntaxError对象是解析代码时发生的语法错误。
上面代码的错误,都是在语法解析阶段就可以发现,所以会抛出SyntaxError。第一个错误提示是"token非法",第二个错误提示
1.2 ReferenceError对象
ReferenceError对象是引用一个不存在的变量发生的错误.
另一种触发场景是,将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。
1.3 RangeError对象
RangeError对象是一个值超出有效范围时发生的错误。主要有几种情况,一是数组长度为负数,二是Number对象的方法参数超出范围,以及函数堆栈超过最大值。
// 数组长度不得为负数
new Array(-1)
// Uncaught RangeError: Invalid array length
1.4 TypeError对象
TypeError对象是变量或参数不是预期类型时发生的错误。比如,对字符串,布尔值,数值等原始类型的值使用new命令,就会抛出这种错误,因为new命令的参数应该是一个构造函数。
new 123
// Uncaught TypeError: number is not a func
var obj = {};
obj.unknownMethod()
// Uncaught TypeError: obj.unknownMethod is not a function
上面代码的第二种情况,调用对象不存在的方法,也会抛出TypeError错误,因为obj.unknowMethod的值为undefined,而不是一个函数。
1.5 URIError对象
URIError对象是URI相关函数的参数的不正确时抛出的错误,主要涉及encoceURI(),decodeURI(),encodeURIComponent(),decodeURIComponent(),escape()和unescape()
decodeURI('%2')
// URIError: URI malformed
1.6 EvalError对象
eval函数没有被正确执行时,会抛出EvalError错误,该错误类型已经不再使用了,只是为了保证以前代码兼容,才继续你保留。