簡單聊聊Js中的常見錯誤類型
前言
js在開發過程經常會遇到各種各樣的報錯,那麼你瞭解這些錯誤產生的原因嗎?下面跟我一起認識這幾種常見的錯誤類型吧
JavaScript中的錯誤類型
- Error
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
Error
Error是最基本的錯誤類型,其他的錯誤類型都繼承自該類型。因此,所有錯誤的類型共享瞭一組相同的屬性。 這個類型的錯誤很少見。一般使用開發人員自定義拋出的錯誤。
EvalError
這個錯誤會在使用eval()函數發生異常時候拋出。兩種情況會出錯:
new eval(); eval = foo;
上面兩個的意思結合就是沒有直接調用eval函數,而是new或者是重新賦值 這個錯誤基本上不會遇到,因為eval函數本來用的就不多。不過需要註意的是,eval是一個關鍵字。
RangeError
這個錯誤會在數值超出相應范圍時觸發。比如使用new Array()的時候傳遞一個負數或者是超過數組最大長度(4,294,967,295)的數,比如Number.MAX_VALUE,Number.MIN_VALUE。註意遞歸爆炸也有這個錯誤。
RangeError:范圍錯誤
RangeError是當一個隻超出有效范圍時發生的錯誤。主要的有幾種情況,第一是數組長度為負數,第二是Number對象的方法參數超出范圍,以及函數堆棧超過最大值。
// 3.RangeError:范圍錯誤 // 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 之間的值,包括 0 和 20,有些實現可以支持更大的數值范圍。如果省略瞭該參數,將用 0 代替。
ReferenceError
這個錯誤一般就是出現在變量找不到的情況,比如:
var a = b; Uncaught ReferenceError: b is not defined
這時候就需要檢查一下這個變量瞭
SyntaxError
當Javascript語言解析代碼時,Javascript引擎發現瞭不符合語法規范的tokens或token順序時拋出SyntaxError。
SyntaxError:語法錯誤 // 1. Syntax Error: 語法錯誤 // 1.1 變量名不符合規范 var 1 // Uncaught SyntaxError: Unexpected number var 1a // Uncaught SyntaxError: Invalid or unexpected token // 1.2 給關鍵字賦值 function = 5 // Uncaught SyntaxError: Unexpected token =
然後也可能因為使用瞭中文符號,少瞭括號,這樣的錯誤也是語法錯誤
//Uncaught SyntaxError: Invalid or unexpected token
TypeError
這個錯誤在JavaScript中是經常遇到的,不管是初學者還是老手。在變量中保存著以外的類型時,或者在訪問不存在的方法時。都會導致這種錯誤。但是歸根結底還是由於在執行特定於類型的操作時,變量的類型並不符合要求所致。比如:
var o = new 10; a.style.widht = "10px";
關於設置樣式這個東西,新手會遇到很多,一般這都是由獲取不到元素導致的。
URIError
在使用encodeURI或者decodeURI因為URL格式不正確時,就會導致URIError錯誤。這種錯誤也很少見。
總結
到此這篇關於Js中常見錯誤類型的文章就介紹到這瞭,更多相關Js常見錯誤類型內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JavaScript錯誤處理機制全面分析講解
- JS中的Error對象及使用JSON.stringify()序列化Error問題
- 詳解JavaScript錯誤捕獲
- 詳解JSON.parse和JSON.stringify用法
- JavaScript錯誤處理try..catch…finally+涵蓋throw+TypeError+RangeError