你能制造JS报错,你就一定能解决JS报错!

187 阅读1分钟

初学者在学JavaScript这门语言的时候,最害怕看到的,应该就是控制台出现的红色错误信息!其实解决这些错误并不难,这是大多数初学者难以跨越的一个心理障碍而已。

ECMA-262 定义了 6 种错误类型:

1. SyntaxError (语法错误) --- 通常是指代码不能经过编译,由浏览器主动抛出的错误

var 1// 变量名不符合规范
var 1na  // 变量名不符合规范
var function = 0  // 变量名使用了关键字
for(let i=0;i<5,i++){}  // 循环里面写错了字符  
if(true){else{}  // 漏掉了花括号

0.png

2. ReferenceError (引用错误) --- 代表当一个不存在(或尚未初始化)的变量被引用时发生的错误

console.log(abc)  // abc变量未被定义
test()  // test方法未被创建

function b(){
    console.log(c)  // 无法获取到变量
    return function(){
        var c = 0
    }
}

5.png

3. RangeError(范围错误)--- 当一个值超出有效范围时发生的错误

[].length = -1 //数组长度为负数

function foo() {  //递归栈溢出
    foo();  
}  
 foo()
 

6.png

4. TypeError(类型错误)--- 变量或参数不是预期类型时发生的错误

new 123  //new 一个数字
var obj = {};
obj.a()  //调用不存在的方法
 

7.png

5. URIError(URL 错误)--- URIError 表示 URI 错误。当 URI 的编码和解码出现问题时,会抛出 URIError。

decodeURI('%%%')
 

8.png

6. EvalError

eval函数没有被正确执行时,会抛出EvalError错误。该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容,才继续保留。