簡單聊聊Js中的常見錯誤類型
前言
js在開發(fā)過程經(jīng)常會遇到各種各樣的報錯,那么你了解這些錯誤產(chǎn)生的原因嗎?下面跟我一起認(rèn)識這幾種常見的錯誤類型吧
JavaScript中的錯誤類型
- Error
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
Error
Error是最基本的錯誤類型,其他的錯誤類型都繼承自該類型。因此,所有錯誤的類型共享了一組相同的屬性。 這個類型的錯誤很少見。一般使用開發(fā)人員自定義拋出的錯誤。
EvalError
這個錯誤會在使用eval()函數(shù)發(fā)生異常時候拋出。兩種情況會出錯:
new eval(); eval = foo;
上面兩個的意思結(jié)合就是沒有直接調(diào)用eval函數(shù),而是new或者是重新賦值 這個錯誤基本上不會遇到,因?yàn)閑val函數(shù)本來用的就不多。不過需要注意的是,eval是一個關(guān)鍵字。
RangeError
這個錯誤會在數(shù)值超出相應(yīng)范圍時觸發(fā)。比如使用new Array()的時候傳遞一個負(fù)數(shù)或者是超過數(shù)組最大長度(4,294,967,295)的數(shù),比如Number.MAX_VALUE,Number.MIN_VALUE。注意遞歸爆炸也有這個錯誤。
RangeError:范圍錯誤
RangeError是當(dāng)一個只超出有效范圍時發(fā)生的錯誤。主要的有幾種情況,第一是數(shù)組長度為負(fù)數(shù),第二是Number對象的方法參數(shù)超出范圍,以及函數(shù)堆棧超過最大值。
// 3.RangeError:范圍錯誤 // 3.1 數(shù)組長度為負(fù)數(shù) [].length = -5 // Uncaught RangeError: Invalid array length // 3.2 Number對象的方法參數(shù)超出范圍 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方法的作用是將數(shù)字四舍五入為指定小數(shù)位數(shù)的數(shù)字,參數(shù)是規(guī)定小數(shù)的位數(shù),是 0 ~ 20 之間的值,包括 0 和 20,有些實(shí)現(xiàn)可以支持更大的數(shù)值范圍。如果省略了該參數(shù),將用 0 代替。
ReferenceError
這個錯誤一般就是出現(xiàn)在變量找不到的情況,比如:
var a = b; Uncaught ReferenceError: b is not defined
這時候就需要檢查一下這個變量了
SyntaxError
當(dāng)Javascript語言解析代碼時,Javascript引擎發(fā)現(xiàn)了不符合語法規(guī)范的tokens或token順序時拋出SyntaxError。
SyntaxError:語法錯誤 // 1. Syntax Error: 語法錯誤 // 1.1 變量名不符合規(guī)范 var 1 // Uncaught SyntaxError: Unexpected number var 1a // Uncaught SyntaxError: Invalid or unexpected token // 1.2 給關(guān)鍵字賦值 function = 5 // Uncaught SyntaxError: Unexpected token =
然后也可能因?yàn)槭褂昧酥形姆?,少了括號,這樣的錯誤也是語法錯誤
//Uncaught SyntaxError: Invalid or unexpected token
TypeError
這個錯誤在JavaScript中是經(jīng)常遇到的,不管是初學(xué)者還是老手。在變量中保存著以外的類型時,或者在訪問不存在的方法時。都會導(dǎo)致這種錯誤。但是歸根結(jié)底還是由于在執(zhí)行特定于類型的操作時,變量的類型并不符合要求所致。比如:
var o = new 10; a.style.widht = "10px";
關(guān)于設(shè)置樣式這個東西,新手會遇到很多,一般這都是由獲取不到元素導(dǎo)致的。
URIError
在使用encodeURI或者decodeURI因?yàn)閁RL格式不正確時,就會導(dǎo)致URIError錯誤。這種錯誤也很少見。
總結(jié)
到此這篇關(guān)于Js中常見錯誤類型的文章就介紹到這了,更多相關(guān)Js常見錯誤類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用JavaScript實(shí)現(xiàn)彈出層效果的簡單實(shí)例
下面小編就為大家?guī)硪黄褂肑avaScript實(shí)現(xiàn)彈出層效果的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05JavaScript實(shí)現(xiàn)表單驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)表單驗(yàn)證功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12JS+HTML5 Canvas實(shí)現(xiàn)簡單的寫字板功能示例
這篇文章主要介紹了JS+HTML5 Canvas實(shí)現(xiàn)簡單的寫字板功能,結(jié)合實(shí)例形式分析了js結(jié)合HTML5 canvas特性的圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-08-08在線編輯器的實(shí)現(xiàn)原理(兼容IE和FireFox)
在線編輯器的實(shí)現(xiàn)原理(兼容IE和FireFox)...2007-03-03JavaScript從數(shù)組的indexOf()深入之Object的Property機(jī)制
這篇文章主要介紹了JavaScript從數(shù)組的indexOf()深入——Object的Property機(jī)制的相關(guān)資料,需要的朋友可以參考下2016-05-05JS代碼實(shí)現(xiàn)百度地圖 畫圓 刪除標(biāo)注
這篇文章主要介紹了JS代碼實(shí)現(xiàn)百度地圖 畫圓 刪除標(biāo)注的相關(guān)資料,實(shí)現(xiàn)此功能的設(shè)計思路非常明確,代碼簡單易懂,非常不錯,具有參考借鑒價值,感興趣的朋友參考下吧2016-10-10