JavaScript程式出錯型別分為哪些
JavaScript程式出錯型別分為:1、Error;2、EvalError;3、RangeError;4、ReferenceError(引用 錯誤);5、SyntaxError(語法錯誤);6、TypeError;7、URIError。
本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
JavaScript中的錯誤型別
ECMA-262 定義了 7 種錯誤型別:
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
其中,Error 是基型別(其他六種型別的父型別),其他型別繼承自它。Error 型別很少見,一般由瀏 覽器丟擲的。這個基型別主要用於開發人員丟擲自定義錯誤。
1. SyntaxError (語法錯誤):
1.1 變數名不符合規範
var 1 // Uncaught SyntaxError: Unexpected
number
var 1a // Uncaught SyntaxError: Invalid or unexpected token
1.2 給關鍵字賦值
function = 5 // Uncaught SyntaxError: Unexpected token =
2. Uncaught ReferenceError(引用錯誤):
引用一個不存在的變數時發生的錯誤。將一個值分配給無法分配的物件,比如對函式的執行結果或者 函式賦值。
2.1 引用了不存在的變數
a(); // Uncaught ReferenceError: a is not
defined
console.log(b); // Uncaught ReferenceError: b is not defined
2.2 給一個無法被賦值的物件賦值
console.log("abc") = 1 // Uncaught
ReferenceError: Invalid left-hand side in assignment
3. RangeError(範圍錯誤):
RangeError 是當一個只超出有效範圍時發生的錯誤。主要的有幾種情況,第一是陣列長度為負數, 第二是 Number 物件的方法引數超出範圍,以及函式堆疊超過最大值。
3.1 陣列長度為負數
[].length = -5; // Uncaught RangeError: Invalid
array length
3.2 Number 物件的方法引數超出範圍
var num = new Number(12.34);
console.log(num.toFixed(-1)); // Uncaught RangeError: toFixed() digits argument must be
between 0 and 20 at Number.toFixed
// 說明: toFixed方法的作用是將數字四捨五入為指定小數位數的數字,引數是小數點後的位數,範圍為0
-20.
4. TypeError(型別錯誤):
變數或引數不是預期型別時發生的錯誤。比如使用 new 字串、布林值等原始型別和呼叫物件不存在 的方法就會丟擲這種錯誤,因為 new 命令的引數應該是一個建構函式。
4.1 呼叫不存在的方法
123(); // Uncaught TypeError: 123 is not a
function
var o = {};
o.run(); // Uncaught TypeError: o.run is not a function
4.2 new 關鍵字後接基本型別
var p = new 456(); // Uncaught TypeError: 456
is not a constructor
5. URIError(URL 錯誤):
主要是相關函式的引數不正確。
decodeURI("%"); // Uncaught URIError:
URI malformed at decodeURI
::: tip 提醒: URI 相關引數不正確時丟擲的錯誤,主要涉及 encodeURI、decodeURI()、 encodeURIComponent()、decodeURIComponent()、escape()和 unescape()六個函式。 :::
6. EvalError eval()(函式執行錯誤):
在 ES5 以下的 JavaScript 中,當 eval()函式沒有被正確執行時,會丟擲 evalError 錯誤。例如 下面的情況:
var myEval = eval;
myEval("alert('call eval')");
需要注意的是:ES5以上的JavaScript中已經不再丟擲該錯誤,但依然可以透過new關鍵字來自定義該型別
的錯誤提示。
::: warning 善用 try-catch 在明明知道某個地方會產生錯誤,可以透過修改程式碼來解決的地方, 是不適合用 try-catch 的。或者是那種不同瀏覽器相容性錯誤導致錯誤的也不太適合,因為可以透過判斷 瀏覽器或者判斷這款瀏覽器是否存在此屬性和方法來解決。 :::
new Error("出錯了!");
new RangeError("出錯了,變數超出有效範圍!");
new TypeError("出錯了,變數型別無效!");
上面程式碼表示新建錯誤物件的例項,實質就是手動丟擲錯誤。可以看到,錯誤物件的建構函式接受一 個引數,代表錯誤提示資訊(message)。
熟知這些基本的錯誤型別,在發生錯誤時可以快速定位解決問題。
【推薦學習:】
以上就是JavaScript程式出錯型別分為哪些的詳細內容,更多請關注php中文網其它相關文章!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758/viewspace-2827141/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript 程式碼報錯型別JavaScript型別
- JavaScript報錯型別(報錯速查)JavaScript型別
- JavaScript有哪些資料型別?JavaScript資料型別
- JavaScript基本資料型別有哪些JavaScript資料型別
- 網路攻擊事件分為哪些型別?主要包括什麼?事件型別
- JavaScript資料型別及輸出JavaScript資料型別
- 網路安全漏洞主要分為哪些型別?Web安全入門型別Web
- JavaScript引用型別-Object型別JavaScript型別Object
- 程式錯誤型別及其處理型別
- JavaScript值型別和引用型別JavaScript型別
- 谷歌檢視JavaScript程式碼出錯位置谷歌JavaScript
- sap table 分為三種型別(轉)型別
- javascript:引用型別JavaScript型別
- Linux系統終端型別有哪些?分別是什麼?Linux型別
- 融合模型分為四種型別(包括混合型)模型型別
- JavaScript物件導向程式設計——Array型別JavaScript物件程式設計型別
- JavaScript - 基本型別與引用型別值JavaScript型別
- [譯] JavaScript 中為什麼會有 Symbol 型別?JavaScriptSymbol型別
- DNS解析記錄有哪些型別?分別代表什麼含義?DNS型別
- Windows驅動分為如下幾種型別Windows型別
- JavaScript - 資料型別JavaScript資料型別
- JavaScript 資料型別JavaScript資料型別
- JavaScript資料型別JavaScript資料型別
- 資料型別: 資料型別有哪些?資料型別
- react 報錯 元素隱式具有 "any" 型別,因為型別為 "string" 的表示式不能用於索引型別 "{}"。 在型別 "{}" 上找不到具有型別為 "string" 的引數的索引簽名。React型別索引
- JavaScript程式碼執行順序和資料型別JavaScript資料型別
- Linux中程式與程式分別指什麼?兩者的區別有哪些?Linux
- javaScript中的Array型別JavaScript型別
- JavaScript - 變數、值、型別JavaScript變數型別
- JavaScript nodeType節點型別JavaScript型別
- JavaScript基本資料型別JavaScript資料型別
- javaScript的資料型別JavaScript資料型別
- JavaScript基本型別總結JavaScript型別
- JavaScript 資料型別與型別判斷詳解JavaScript資料型別
- 海外代理有哪些型別?型別
- 公共映象有哪些型別型別
- BigDecimal轉為String型別、int型別Decimal型別
- 什麼是組合資料型別?Python組合資料型別分為幾類?資料型別Python