Skip to content

常见报错类型

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 代码一行都不会执行。而其他类型的异常都是 执行阶段 的错误,就算报错,也会执行异常之前的脚本。