JavaScript 错误类型归类
SyntaxError(语法错误)
在解析代码时候发生的语法错误, 比如
function fn(){
let a =
}
fn();
错误信息 Uncaught SyntaxError: Unexpected token '}'
TypeError(类型错误)
变量或者参数不是预期的类型时发生的错误, 比如在字符串上调用数组的方法.
let a = 1234;
a.contact(5);
// undefined上调用也会
console.log(window.aaa.s)
错误信息 Uncaught TypeError: a.contact is not a function Uncaught TypeError: Cannot read property 's' of undefined
RangeError(范围错误)
当一个值超出有效范围时候发生的错误, 比如数组的长度为 -1
const a = new Array(-1);
错误信息 Uncaught RangeError: Invalid array length
不过使用Array.form({ length: -2 })的方式不会报该错误; const arr = Array.from({ length: -2 }); console.log(arr); // []
ReferenceError(引用错误)
当引用一个不存在的变量时发生的错误;
console.log(ss);
function name() {
console.log(1)
}
name1()
错误信息 Uncaught ReferenceError: ss is not defined
EvalError(执行错误)
eval函数没有被正确执行时抛出的错误
new eval();
eval = () => {};
错误信息 Uncaught TypeError: eval is not a constructor
EvalError错误类型现在已经过时,不再使用了; 但是为了兼容以前代码才保留; 所以看到的是TypeError错误
URIError(URI错误)
调用 decodeURI encodeURI decodeURIComponent 一类浏览器提供方法报错 decodeURIComponent('%')
错误信息 Uncaught URIError: URI malformed Filed to load resource(资源加载错误)
video input img object script style audio等标签加载资源出错时抛出的错误;
当加载跨域资源时候, 使浏览器不报此错误, 可以在需要的元素上加上crossorigin; 同时服务端响应头设置 Access-Control-Allow-Origin为*, 才能保证浏览器加载跨域资源请求时不报错;