常见报错类型
RangeError
这类错误很常见,例如栈溢出就是 RangeError
;
js
function a () {
b()
}
function b () {
a()
}
a()
// out:
// RangeError: Maximum call stack size exceeded
ReferenceError
ReferenceError
也很常见,打印一个不存在的值就是 ReferenceError
:
js
hello
// out:
// ReferenceError: hello is not defined
SyntaxError
SyntaxError
也很常见,当语法不符合 JS 规范时,就会报这种错误:
js
console.log(1));
// out:
// console.log(1));
// ^
// SyntaxError: Unexpected token ')'
TypeError
TypeError
也很常见,当一个基础类型当作函数来用时,就会报这个错误:
js
var a = 1;
a()
// out:
// TypeError: a is not a function
上面的各种 Error 类型中,SyntaxError
最为特殊,因为它是 编译阶段 抛出来的错误,如果发生语法错误,JS 代码一行都不会执行。而其他类型的异常都是 执行阶段 的错误,就算报错,也会执行异常之前的脚本。