# 一、错误信息
# 1. SyntaxError 语法错误
// 变量名不规范
var 1 = 1;
var 1ab = 1;
// 关键字赋值
new = 5;
function = 1;
// 基本的语法错误
var a = 5:
function 1test() {}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2. ReferenceError 引用错误
test();
console.log(a);
var a = 1 = 2;
var a = 1;
console.log(a) = 1;
1
2
3
4
5
2
3
4
5
# 3. RangeError 范围错误
// 数组长度赋值为负数
var arr = [1, 2, 3];
arr.length = -1;
console.log(arr);
// 对象方法参数超出可行范围
var num = new Number(66.66);
console.log(num.toFixed(-1));
1
2
3
4
5
6
7
2
3
4
5
6
7
# 4. TypeError 类型错误
// 调用不存在的方法
123();
var obj = {};
obj.say();
var a = new 'string';
1
2
3
4
5
2
3
4
5
# 5. URIError URI错误
URI: UNIFORM RESOURCE IDENTIFIER 统一资源标识符 URL: UNIFORM RESOURCE LOCATOR 统一资源定位符 URN: UNIFORM RESOURCE NAME 统一资源名称
var myUrl = 'http://www.baidu.com?name=你好哈哈';
var newUrl = encodeURI(myUrl);
console.log(newUrl);
var newNewUrl = decodeURI(newUrl);
console.log(newNewUrl);
var str = decodeURI('%fdsdf%');
1
2
3
4
5
6
7
2
3
4
5
6
7
# 6. EvalError eval函数执行错误
eval('var a = 1; console.log(a)');
var obj = {
a: 1,
b: 2
};
console.log(eval('obj'));
var error = new Error('代码错误了');
console.log(error);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 二、try_catch
系统自动为我们抛出错误。
console.log('正常执行1');
console.log(a); // ReferenceError
console.log('非正常执行'); // 不执行
1
2
3
2
3
手动抛出错误的方法:try catch finally throw
try {
console.log('正常执行1');
console.log(a); // 执行报错
console.log(b); // 不执行
console.log('正常执行2');
} catch (error) {
console.log(error.name + ':' + error.message);
} finally {
console.log('正常执行3');
}
console.log('正常执行4');
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
// JSON字符串
var jsonStr = '';
try {
if (jsonStr == '') {
throw 'JSON字符串为空';
}
console.log('我要执行啦!!!!');
var json = JSON.parse(jsonStr);
console.log(json);
} catch (error) {
console.log(error);
var errorTip = {
name: '数据传输失败',
errorCode: '10010'
}
console.log(errorTip);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#
# 三、严格模式
ES5严格模式 ECMAScript 97 1.0 98 2.0 99 3.0 JS通行标准 07 4.0草案 08 4.0中止 3.1 Harmony -> ECMAScript5 09 5.0发布 Harmony -> 1/2 js.next 1/2 js.next.next 11 5.1 ISO国际标准 13 ES6 = js.next js.next.next 7 13 ES6草案发布 15 ES6正式发布 ECMAScript2015
'use strict'
1
function test() {
'use strict';
}
var test = (function () {
'use strict';
})();
1
2
3
4
5
6
7
2
3
4
5
6
7
var a = 1;
var obj = {
a: 2
};
function test() {
var a = 3;
with(window) {
console.log(a);
}
}
test();
'use strict';
var obj = {
a: 1,
a: 2,
};
console.log(obj.a); // 2
'use strict'
eval('var a = 1; console.log(a);');
console.log(a);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21