日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

7個你應該知道的JS原生錯誤類型

瀏覽:171日期:2024-03-30 16:59:40
概述

從瀏覽器控制臺到運行 Node.js的終端,我們到處都會看到錯誤。本文的重點是概述我們在js開發過程中可能遇到的錯誤類型。

提示:良好的錯誤提示會導致快速而無痛的發展經歷與緩慢而痛苦的發展經歷之間的區別。在編寫可重用的代碼時,請確保自己在編寫清晰易懂的錯誤處理代碼。

1. RangeError

當數字超出允許的值范圍時,將會拋出此錯誤。

例如

const l = console.logconst arr = [90,88]arr.length=90**99

我們有一個數組,帶有兩個元素的 arr。接下來,嘗試將數組擴展為包含90**99 == 2.9512665430652753e+193個元素。

這個數字超出了數組大小可以增長的范圍。運行它會拋出 RangeError:

$ node errors

errors.js:4

arr.length=90**99

 ^RangeError: Invalid array length

因為我們要增加 arr 數組的大小超出了 JS 指定的范圍。

2. ReferenceError

當對變量或項目的引用被破壞時,將會引發此錯誤。那是變量或項目不存在。

例如

const l=console.logconst cat = 'cat'catdog

有一個變量cat被初始化為 “cat”。接下來引用了cat變量和dog變量。cat變量存在,而dog變量不存在。

cat將返回 “cat”,而dog將引發引用錯誤,因為在環境記錄中找不到名稱dog。

$ node errors

errors.js:3

dog

^ReferenceError: dog is not defined

每當我們創建或定義變量時,變量名稱都會寫入環境記錄中。環境記錄就像鍵值存儲一樣,

+-------------+

| Key | Value |

---------------

| cat | 'cat' |

+-------------+

每當我們引用變量時,它都會存儲程序中定義的變量。當在記錄中找到環境值并提取并返回值時,將以該變量的名稱作為關鍵字在環境記錄進行搜索。調用尚未定義的函數。

現在,當我們創建或定義一個沒有賦值的變量時。變量將其鍵作為變量名寫入環境記錄,但其值將會保持未定義的狀態。

var catenv record

+-----------------+

| Key | Value |

-------------------

| cat | undefined |

+-----------------+

稍后為變量分配值時,將在環境記錄中搜索該變量,當發現它未定義值時,該賦值將被覆蓋。

var cat

cat = 'cat'env record

+-------------+

| Key | Value |

---------------

| cat | 'cat' |

+-------------+

所以當在環境記錄中找不到變量名時,JS 引擎將引發 RefernceError。

+-------------+

| Key | Value |

---------------

| cat | 'cat' |

+-------------+cat // 'cat', yes, :) it’s there

dog // :( what’s this? can’t find it

注意:未定義的變量不會拋出 ReferenceError,因為它在于環境記錄中的值尚未設置。

3. SyntaxError

這是最常見的錯誤。當我們輸入 JS 引擎不能理解的代碼時,就會發生這個錯誤。

JS 引擎在解析期間捕獲了這個錯誤。在 JS 引擎中,我們的代碼經歷了不同的階段,然后才能在終端上看到結果。

標記化 解析 解釋

標記化將代碼的源分解為各個單元。在此階段,將對數字、關鍵字、文字、運算符進行分類并分別標記。

接下來,生成的標記流將會傳遞到解析階段,由解析器處理。這是從標記流生成 AST 的地方。 AST 是代碼結構的抽象表示。

在標記化和解析這兩個階段,如果我們代碼的語法不符合 JS 的語法規則,則會使該階段失敗并引發 SyntaxError。例如:

const l = console.loglet cat h = 'cat'

代碼中的 “h” 代表什么?這個 “h” 破壞了代碼。

$ node errors

errors.js:3

let cat h = 'cat'

 ^SyntaxError: Unexpected identifier

看,Node.js 指出了問題的所在。它說 “h” 是意外的,它破壞了cat 變量的聲明。

因此,可以說語法錯誤在解析或編譯期間發生。

4. TypeError

當其他 NativeError 對象中沒有適當的失敗原因的指示時,TypeError 用于指示操作失敗。

對錯誤的數據類型執行操作時會發生 TypeError,例如:

如果我們嘗試將數字轉換為大寫,如下所示:

const num = 123num.toUpperCase()

這將引發TypeError

$ node errors

errors.js:4

num.toUpperCase()

 ^TypeError: num.toUpperCase is not a function

因為toUpperCase函數需要字符串數據類型。toUpperCase函數是有意通用的;它不需要其this值是String對象。因此,可以將其轉移到其他種類的對象中用作方法。

只有字符串才會轉換為大寫或小寫形式,如果我們在 Objects、Boolean、Symbol、null、undefined 數據類型上調用toUpperCase函數,則將會得到 TypeError,因為它操作的數據類型錯誤。

5. URIError

這表明使用了一種與其定義不兼容的全局 URI 處理函數。

JS 中的 URI(統一資源指示符)具有以下功能:decodeURI、decodeURIComponent 等。

如果我們用錯誤的參數去調用其中任何一個,將得會到一個 URIError。

decodeURI('%')^URIError: URI malformed

encodeURI用于獲取 URI 的未編碼版本。 “%” 不是正確的 URI,因此引發了URIError。

當 URI 編碼或解碼出現問題時,會引發 URIError。

6. EvalError

當使用全局eval()函數時,這用于識別錯誤。

根據 EcmaSpec 2018 版:

此規范當前未使用此異常。保留它目的是為了與本規范的先前版本兼容。

7. InternalError

該錯誤在 JS 引擎內部發生,特別是當它有太多數據要處理并且棧增長超過其關鍵限制的時侯。

當 JS 引擎被過多的遞歸和切換情況等淹沒時,就會發生這種問題

switch(num) { case 1: ... break case 2: ... break case 3: ... break case 4: ... break case 5: ... break case 6: ... break case 7: ... break ... up to 1000 cases }

以下是一個簡單的過多遞歸的例子:

function foo() { foo()}foo()總結

正如我們所說,誰都會犯錯誤。就我們敲代碼這件事而言,這是一個穩定的事件。為了克服它,我們需要知道可以拋出的原生錯誤的類型。本文中列出了它們,并提供了一些示例來說明它們是如何引發的。

所以無論什么時候在終端或瀏覽器中引發錯誤,你都可以輕松發現錯誤產生的位置和方式,并能夠編寫更好、更不易出錯的代碼。

以上就是7個你應該知道的JS原生錯誤類型的詳細內容,更多關于JS原生錯誤類型的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产麻豆一区| 日韩精品亚洲专区在线观看| 久久国产免费看| 日韩午夜电影| 欧美日韩四区| 国产精品嫩草99av在线| 亚洲一区二区三区高清| 老鸭窝毛片一区二区三区| 日韩在线a电影| 亚洲一区欧美| 久久激情五月婷婷| 欧美极品中文字幕| 久久69成人| 欧洲av不卡| 91久久久精品国产| 免费观看久久久4p| 日韩激情精品| 国产精品久久久久久久久久久久久久久| 日本成人在线一区| 欧美一级网站| 国产中文字幕一区二区三区| 精品欧美日韩精品| 欧洲亚洲一区二区三区| 在线视频日韩| 日韩欧美中文在线观看| 国产欧美日本| 成人精品视频| 1000部精品久久久久久久久| 亚洲一区二区三区四区五区午夜| 亚洲免费专区| 国产精品国码视频| 亚洲人成在线网站| 性欧美精品高清| 亚洲精品动态| 美女av一区| 亚洲午夜一级| 日韩精品亚洲一区二区三区免费| 韩国一区二区三区视频| 亚洲精品成人| 欧美日韩亚洲一区三区| 成人国产精品一区二区免费麻豆| 久久免费黄色| 亚洲日韩中文字幕一区| 国产欧美日韩精品一区二区三区| 亚洲欧洲美洲av| 在线国产精品一区| 久久av网址| 在线视频观看日韩| 香蕉成人久久| 国产黄色一区| 欧美 日韩 国产精品免费观看| 亚洲字幕久久| 国产美女高潮在线| 综合国产视频| 日本不良网站在线观看| 综合色一区二区| 国产自产自拍视频在线观看| 亚洲一区成人| 精品久久久亚洲| 久久不射网站| 欧美好骚综合网| 中文字幕亚洲在线观看| 高清精品久久| 久久国产精品久久久久久电车| 免费在线欧美黄色| 久久先锋影音| 日韩精品永久网址| 日本伊人午夜精品| 日韩伦理一区| 日韩综合一区二区| 视频福利一区| 国产亚洲久久| 亚洲精品一区二区在线看| 久久成人福利| 午夜在线一区二区| 日韩久久电影| 免费在线日韩av| 中文字幕一区二区三区四区久久| 国产传媒在线观看| 日韩av一级片| 久久国产99| | 9国产精品视频| 麻豆成人在线观看| 婷婷综合国产| 国产婷婷精品| 精品丝袜在线| 久久精品国产久精国产| 亚洲专区视频| 午夜电影亚洲| 欧美少妇精品| 国际精品欧美精品| 亚洲制服一区| 日韩视频一区二区三区在线播放免费观看 | 亚洲ab电影| 亚洲综合国产| 亚洲二区三区不卡| 九九精品调教| 国产一区二区三区国产精品| 欧美一级一区| 日本不卡视频在线观看| 日韩专区在线视频| 亚洲精品在线观看91| 水蜜桃久久夜色精品一区| 国产精品一区二区av日韩在线| 亚洲精品看片| 最新国产精品| 亚洲精品麻豆| 日本v片在线高清不卡在线观看| 野花国产精品入口| 最新日韩欧美| 午夜国产精品视频免费体验区| 久久蜜桃av| 激情综合亚洲| 1024精品久久久久久久久| 成人片免费看| 波多野结衣久久精品| 亚洲天堂av影院| 色爱综合网欧美| 日本精品黄色| 国产美女高潮在线| 国产h片在线观看| 久久影院午夜精品| 亚洲播播91| 午夜精品久久久久久久久久蜜桃| 91亚洲国产| 午夜精品成人av| 欧美日韩精品免费观看视欧美高清免费大片| 国产一区二区三区亚洲综合| 成人精品视频| 日本在线高清| 99精品视频在线| 女人av一区| 国产高清久久| 国产精品毛片| 日本不卡不码高清免费观看| 日韩av资源网| 另类小说一区二区三区| 国产成人精品三级高清久久91| 97视频热人人精品免费| 亚洲电影有码| 99视频一区| 日韩一二三区在线观看| 欧美久久香蕉| 精品一区二区男人吃奶 | 国产中文在线播放| 成人羞羞视频播放网站| 国产白浆在线免费观看| 欧美日韩一二三四| 亚洲欧美久久| 欧美精品福利| аⅴ资源天堂资源库在线| 99久久亚洲精品蜜臀| 先锋亚洲精品| 欧美日韩一区二区国产| 久久精品伊人| 成人看片网站| 天使萌一区二区三区免费观看| 亚欧成人精品| 久久爱www.| 亚洲成人精品| 中文字幕av一区二区三区人| 日本免费新一区视频| 色综合五月天| 国产麻豆综合| 国产日韩三级| 91精品亚洲| 日韩不卡一区二区| 日韩精品1区| 蜜桃视频在线观看一区二区| 久久国产免费看| 亚洲精品一区三区三区在线观看| 老牛影视一区二区三区| 欧美1区二区| 午夜国产欧美理论在线播放| 欧美一级二级三级视频| 欧美日韩视频免费观看| 热久久久久久久| 久久久国产精品入口麻豆| 91久久久精品国产| 国产乱子精品一区二区在线观看| 999久久久亚洲| 欧美久久一区二区三区| 亚洲va在线| 国产色99精品9i| 国产精品99一区二区| 国产日韩欧美一区在线| 九九久久婷婷| 国产精品白丝av嫩草影院| 亚洲高清影视| 狂野欧美性猛交xxxx| 久久香蕉精品| 国产精品香蕉| 免费中文字幕日韩欧美| 欧美激情国产在线| 日本亚洲欧美天堂免费| 久久在线电影| 九九久久国产| 中文字幕av亚洲精品一部二部| 日韩深夜视频|