首頁 > web前端 > 前端問答 > JavaScript程式出錯類型分為哪些

JavaScript程式出錯類型分為哪些

青灯夜游
發布: 2023-01-07 11:47:41
原創
2541 人瀏覽過

JavaScript程式出錯類型分為:1、Error;2、EvalError;3、RangeError;4、ReferenceError(引用 錯誤);5、SyntaxError(語法錯誤);6、TypeError;7、URIError。

JavaScript程式出錯類型分為哪些

本教學操作環境: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進階教學###】###

以上是JavaScript程式出錯類型分為哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板