常见报错类型
RangeError
这类错误很常见,例如栈溢出就是 RangeError;
js
function a () {
b()
}
function b () {
a()
}
a()
// out:
// RangeError: Maximum call stack size exceededReferenceError
ReferenceError 也很常见,打印一个不存在的值就是 ReferenceError:
js
hello
// out:
// ReferenceError: hello is not definedSyntaxError
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 代码一行都不会执行。而其他类型的异常都是 执行阶段 的错误,就算报错,也会执行异常之前的脚本。