SyntaxError 语法错误javascript
ReferenceError 引用错误html
RangeError 范围错误java
TypeError 类型错误数组
URIError URI 错误安全
EvalError eval 函数执行错误markdown
try...catch函数
try 块中出错,catch 块中获取错误信息ui
try {
console.log(a)
} catch (e) {
console.log(e)
console.log(e.name)
console.log(e.message)
}
复制代码
finallythis
finally 包含必定要执行的语句spa
try {
console.log(a)
} catch (e) {
console.log(e)
} finally {
console.log('over')
}
复制代码
throw
抛出一个能够捕获的错误,可指定错误信息和错误类型
try {
throw '一个错误被抛出'
} catch (e) {
console.log(e)
} finally {
console.log('over')
}
复制代码
ES3.0 存在如下问题
3.0 基础上推出严格模式,IE9 及如下不支持严格模式
使用严格模式
能够全局使用严格模式,也能够在单独做用域中使用
<script type="text/javascript"> 'use strict' function test() { 'use strict' } var test = (function () { 'use strict' })() </script>
复制代码
严格模式不能使用 with 方法,语法错误
with 方法用于改变做用域
var obj = {
a : 1
}
function test() {
var a = 2
with (obj) {
console.log(a)
}
}
test()
复制代码
严格模式下不能使用 arguments 的callee 和 caller 属性,类型错误
严格模式下,不容许不声明直接赋值
// 严格模式下报引用错误
a = 1
var b = c = 2
复制代码
严格模式下函数内部 this 为 undefined
function test() {
console.log(this)
}
test() // undefined
var t = new test() // {}
test.call(1) // 1
复制代码
严格模式下不容许函数参数重复,报语法错误
严格模式拒绝使用重复的对象属性名,但不报错
严格模式下 eval 函数问题
eval('var a = 1')
console.log(a)
// 非严格模式下,a 挂在 window 上,打印出 1,
// 严格模式下,eval 有本身的做用域,在 window 下打印 a 报引用错误
复制代码