整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          你應該知道的七種 JavaScript 錯誤類型

          你應該知道的七種 JavaScript 錯誤類型

          者:CUGGZ

          在使用 JavaScript 時,我們可能會遇到各種各樣的錯誤,那你知道 JavaScript 常見的錯誤類型有哪些嗎?下面就來看看 JavaScript 中常見的錯誤類型。

          1. SyntaxError

          SyntaxError 表示語法錯誤。當錯誤的使用已經預定義的語法時會拋出此錯誤。

          2. TypeError

          TypeError 表示類型錯誤。當值不是預期數據類型、調用無效方法時都會拋出此錯誤。

          3. ReferenceError

          ReferenceError 表示引用錯誤。當找不到變量的引用、在變量作用域范圍之外使用變量、使用未聲明的變量時、在暫時性死區期間使用變量時都會拋出此錯誤。

          4. RangeError

          RangeError 表示范圍錯誤。將變量設置在其限定的范圍之外、將值傳遞給超出范圍的方法、調用一個不會結束的遞歸函數時就會拋出此錯誤。

          5. URIError

          URIError 表示 URI 錯誤。當 URI 的編碼和解碼出現問題時,會拋出 URIError。JavaScript 中的 URI 操作函數包括:decodeURI、decodeURIComponent 等。如果使用了錯誤的參數(無效字符),就會拋出 URIError。

          6. EvalError

          EvalError 表示 Eval 錯誤。當 eval() 函數調用發生錯誤時,會拋出 EvalError。不過,當前的 JavaScript 引擎或 ECMAScript 規范不再拋出此錯誤。但是,為了向后兼容,它仍然是存在的。

          7. InternalError

          InternalError 表示內部錯誤。當 JavaScript 引擎上的工作負載突然激增時,會拋出此錯誤。當有太多數據需要處理時,工作量就會激增,比如函數調用包含過多的遞歸或者過多的switch case時。

          注意: 現代 JavaScript 中不會拋出 EvalError 和 InternalError 錯誤。

          來源: 前端充電寶

          東IT優就業

          javascript中常見錯誤類型有哪些?跟著廣州IT培訓老師來看一看。

          js中控制臺報錯主分兩大類:

          第一類:語法錯誤,這一類錯誤在javascript預解析的過程中如果遇到,則會導致整個js文件都無法執行。

          另一類:統稱為異常,這一類的錯誤會導致在錯誤出現的那一行之后的代碼無法執行,但注意,在那一行之前的代碼是不會受到影響的。

          注意:以下的6種錯誤中,都可以按照3個參數來查找錯誤;

          第一個參數message:表示錯誤提示信息,第二個fileName文件名,第三個lineNumber行號。

          1. SyntaxError(語法錯誤):

          2. Uncaught ReferenceError(引用錯誤):

          引用一個不存在的變量時發生的錯誤。將一個值分配給無法分配的對象,比如對函數的運行結果或者函數賦值

          3. RangeError(范圍錯誤):

          RangeError是當一個只超出有效范圍時發生的錯誤。主要的有幾種情況,第一是數組長度為負數,第二是Number對象的方法參數超出范圍,以及函數堆棧超過最大值。

          4. TypeError(類型錯誤):

          變量或參數不是預期類型時發生的錯誤。

          比如使用new字符串、布爾值等原始類型和調用對象不存在的方法就會拋出這種錯誤,因為new命令的參數應該是一個構造函數。

          5. URIError(URL錯誤):

          URI相關參數不正確時拋出的錯誤,

          主要涉及encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()六個函數。

          6. EvalError eval()(函數執行錯誤):

          注意:是在ES5以下的Js中,當eval()函數沒有被正確執行時,才會拋出的錯誤;ES5以上沒有

          希望廣州IT培訓老師上述分享的內容對大家有所幫助,有其他IT常見問題歡迎提出交流。

          廣東IT優就業

          出處:www.cnblogs.com/xuanranit/p/8399030.html

          更多IT精彩推薦:

          月入過萬的WEB工程師是如何煉成的?http://www.ujiuye.com/zt/webqianduan/?

          夠快速地錯誤定位,解決問題,是我們開發中非常重要的一種能力。

          從瀏覽器控制臺到運行Node.js的計算機終端,我們到處都會看到錯誤。

          這篇文章重點介紹了在JS開發過程中可能遇到的 7 種錯誤類型。

          1. RangeError 范圍錯誤

          當數字超出允許的值范圍時,將拋出此錯誤;或者JS執行進入死循環。

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

          這個數字超出了數組最大的長度范圍。 運行它會拋出RangeError:

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

          2. ReferenceError 引用錯誤

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

          我們有一個變量cat初始化為"cat"。 接下來,我們參考cat變量和dog變量。 cat變量存在,而dog變量不存在。

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

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

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

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

          稍后為變量分配值時,將在env記錄中搜索該變量,當找到初始未定義值時,該賦值將被覆蓋。

          因此,當在環境記錄中找不到變量名時,JS引擎會引發ReferenceError。

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

          3. SyntaxError 語法錯誤

          這是我們遇到的最常見的錯誤。 當我們鍵入JS引擎可以理解的代碼時,會發生此錯誤。

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

          • tokenization 標記化
          • parsing 解析
          • interpreting 編譯

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

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

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

          單獨的h代表什么? 那里的h破壞了代碼。

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

          4. TypeError 類型錯誤

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

          對錯誤的數據類型執行操作時會發生TypeError。 可能是布爾值,但是找到了ing。

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

          將拋出一個 TypeError

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

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

          5. URIError

          這表明使用一種全局URI處理功能與其定義不兼容。

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

          如果我們使用錯誤的參數調用它們中的任何一個,我們將得到URIError

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

          如果對URI進行編碼或解碼有問題,則會引發URIError。

          6. EvalError

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

          根據EcmaSpec 2018版: 此規范當前未使用此異常。 保留該對象是為了與本規范的先前版本兼容。

          7. InternalError 內部錯誤

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

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

          太多的遞歸,一個簡單的例子是這樣的:

          總結

          正如我們所說,沒有人能避免犯錯誤。 就我們鍵入代碼而言,這是一個穩定的事件。 為了克服它,我們需要知道可以拋出的本機錯誤的類型。 我們在這篇文章中列出了它們,并提供了一些示例來說明它們是如何遇到的。

          因此,無論何時在終端或瀏覽器中引發錯誤,您現在都可以輕松發現錯誤發生的位置和方式,并編寫更好,更不易出錯的代碼。

          文/H5技術專家:云和數據阿寬老師

          想學習前端,請關注并私信:h5學習,贈送您學習大禮包!


          主站蜘蛛池模板: 视频一区二区在线观看| 最新中文字幕一区二区乱码| 久久久久人妻精品一区三寸| 亚洲无线码一区二区三区| 日韩精品一区二区三区中文3d | 国产精品亚洲一区二区麻豆| 亚洲av区一区二区三| 国产在线不卡一区| 亚洲日韩中文字幕一区| 亚洲福利一区二区精品秒拍| 国产激情无码一区二区| 午夜精品一区二区三区在线观看| 久久久久人妻精品一区三寸| 中文字幕人妻AV一区二区| 精品无码人妻一区二区三区品 | 中文字幕一区在线观看视频| 无码精品人妻一区二区三区中| 色婷婷AV一区二区三区浪潮| 亚洲av片一区二区三区| 好吊视频一区二区三区| 国产在线精品一区二区三区不卡| 一区二区视频在线免费观看| 色综合视频一区二区三区| 精品视频在线观看一区二区| 高清无码一区二区在线观看吞精| 爱爱帝国亚洲一区二区三区| 国产在线精品观看一区| 无码人妻一区二区三区在线水卜樱 | 无码一区二区三区在线| 国产精品综合一区二区三区| 国产成人免费一区二区三区| 一区二区高清在线| 久久精品国产免费一区| 国产福利91精品一区二区| 色一情一乱一区二区三区啪啪高| 亚洲AV无码一区二区三区鸳鸯影院 | 国产精品高清一区二区三区| 中文字幕精品一区影音先锋| 成人H动漫精品一区二区| 无码AⅤ精品一区二区三区| 中文字幕一区日韩在线视频|