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 報引用錯誤
複製代碼