1、JS中常見的幾種錯誤
1.1、SyntaxError(語法錯誤)
解析代碼時發生的語法錯誤
var 1a; //Uncaught SyntaxError: Invalid or unexpected token 變量名錯誤 console.log 'hello'); //Uncaught SyntaxError: Unexpected string 缺少括號
1.2、ReferenceError(引用錯誤)
console.log(a); //Uncaught ReferenceError: a is not defined 引用了一個不存在的變量 console.log()= 1; //Uncaught ReferenceError: Invalid left-hand side in assignment 將變量賦值給一個無法被賦值的對象
1.3、RangeError(范圍錯誤)
var a = new Array(-1); //Uncaught RangeError: Invalid array length 超出有效范圍
1.4、TypeError(類型錯誤)
變量或參數不是預期類型,比如,對字符串、布爾值、數值等原始類型的值使用new命令,就會拋出這種錯誤,因為new命令的參數應該是一個構造函數。
var a = new 123; //Uncaught TypeError: 123 is not a function
調用對象不存在的方法
var a;
a.aa(); //Uncaught TypeError: Cannot read property 'aa' of undefined
1.5、URLError(URL錯誤)
與url相關函數參數不正確,主要是encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()這六個函數。
decodeURI('%2') //Uncaught URIError: URI malformed
1.6、EvalError(eval錯誤)
eval函數沒有被正確執行
2、手動拋出錯誤
以上這6種派生錯誤,連同原始的Error對象,都是構造函數。開發者可以使用它們,人為生成錯誤對象的實例。
throw new Error("出錯了!");
throw new RangeError("出錯了,變量超出有效范圍!");
throw new TypeError("出錯了,變量類型無效!");
上面代碼表示新建錯誤對象的實例,實質就是手動拋出錯誤。可以看到,錯誤對象的構造函數接受一個參數,代表錯誤提示信息(message)。