初学者在学JavaScript这门语言的时候,最害怕看到的,应该就是控制台出现的红色错误信息!其实解决这些错误并不难,这是大多数初学者难以跨越的一个心理障碍而已。
ECMA-262 定义了 6 种错误类型:
1. SyntaxError (语法错误) --- 通常是指代码不能经过编译,由浏览器主动抛出的错误
var 1; // 变量名不符合规范
var 1na // 变量名不符合规范
var function = 0 // 变量名使用了关键字
for(let i=0;i<5,i++){} // 循环里面写错了字符
if(true){else{} // 漏掉了花括号
2. ReferenceError (引用错误) --- 代表当一个不存在(或尚未初始化)的变量被引用时发生的错误
console.log(abc) // abc变量未被定义
test() // test方法未被创建
function b(){
console.log(c) // 无法获取到变量
return function(){
var c = 0
}
}
3. RangeError(范围错误)--- 当一个值超出有效范围时发生的错误
[].length = -1 //数组长度为负数
function foo() { //递归栈溢出
foo();
}
foo()
4. TypeError(类型错误)--- 变量或参数不是预期类型时发生的错误
new 123 //new 一个数字
var obj = {};
obj.a() //调用不存在的方法
5. URIError(URL 错误)--- URIError 表示 URI 错误。当 URI 的编码和解码出现问题时,会抛出 URIError。
decodeURI('%%%')
6. EvalError
eval函数没有被正确执行时,会抛出EvalError错误。该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容,才继续保留。