聲明:文章參考了《javascript高級程序設計 第三版》,並結合了一些簡單的例子,本身再次整合,整理出js常見的報錯,以便用於學習交流
報錯爲:Uncaught Syntaxerror:相關信息提示。表示解析代碼時發生的語法錯誤,即寫的代碼不符合js編碼規則。咱們能夠根據後面的信息提示去修改錯誤,固然,語法錯誤,瀏覽器會直接報錯,整個代碼都不會執行。
javascript
以下:第一種:變量名錯誤致使;第二種:缺乏括號前端
聲明變量:var / let / const / function,當建立一個變量時會在內存中的棧區開闢一個新的空間。
變量命名規則和規範:
規則:
1.由字母、數字、下劃線、$符號組成,不能以數字開頭
2.不能是關鍵字和保留字,例如:for,while,this,name
3.區分大小寫
規範:
1.變量名必須有意義
2.遵照駝峯命名法
3.建議不要用$做爲變量名
報錯爲:Uncaught ReferenceError:***,表示使用了沒有定義的變量,錯誤以前的代碼會執行,以後代碼不會執行。
java
以下:第一種:引用了一個不存在的變量;第二種:將變量賦值給一個沒法被賦值的對象;第三種:使用JSON.parse進行解析json字符串時,解析的內容不合法ajax
RangeError是當一個值超出有效範圍時發生的錯誤。主要有幾種狀況,一是數組長度爲負數,二是Number對象的方法參數超出範圍,以及函數堆棧超過最大值。
typescript
(1) 變量或參數不是預期類型,好比,對字符串、布爾值、數值等原始類型的值使用new命令,就會拋出這種錯誤,由於new命令的參數應該是一個構造函數。json
(2) 調用對象不存在的方法。如下的錯誤是由於變量**前面的那個變量是undefined/null。跨域
URIError是URI相關函數的參數不正確時拋出的錯誤,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()這六個函數。這些API的使用太少了,所以這種錯誤在咱們平常開發中不多遇到。
數組
eval函數沒有被正確執行時,會拋出EvalError錯誤。該錯誤類型已經再也不在ES5中出現了,只是爲了保證與之前代碼兼容,才繼續保留。所以這種錯誤在咱們平常開發中也基本不會遇到。瀏覽器
Error 是基類型,其餘六種錯誤類型都繼承自該類型。所以,全部錯誤類型共享了一組相同的屬 性(錯誤對象中的方法全是默認的對象方法)。 Error 類型的錯誤不多見,若是有也是瀏覽器拋出的; 這個基類型的主要目的是供開發人員拋出自定義錯誤。以下:
安全
類型轉換錯誤發生在使用某個操做符,或者使用其餘可能會自動轉換值的數據類型的語言結構時。 在使用相等(==)和不相等(!=)操做符,或者在 if 、 for 及 while 等流控制語句中使用非布爾值時, 最常發生類型轉換錯誤。
所以建議使用全等(===)和不全等(!==)操做符,以免類型轉換。
alert(5 == "5"); //true
alert(5 === "5"); //false
alert(1 == true); //true
alert(1 === true); //false複製代碼
JavaScript 是鬆散類型的,也就是說,在使用變量和函數參數以前,不會對它們進行比較以確保它 們的數據類型正確。爲了保證不會發生數據類型錯誤,只能依靠開發人員編寫適當的數據類型檢測代碼。 建議你們能夠學習使用typescript,它是一種強類型的語言,能夠設置變量的具體類型,在前端開發中使用會極大的減小咱們開發的bug,而且方便維護。
function getQueryString (url) {
if (typeof url == "string") { // 經過檢查類型確保安全
let pos = url.indexOf("?")
if (pos > -1) {
return url.substring(pos + 1)
}
}
return ""
}
// 這個函數首先檢查了傳入的值是否是字符串。這樣,就確保了函數不會由於接收到非字符串值而致使錯誤。
複製代碼
(1)ajax請求的地址url不正確:會報404的狀態碼,找不到頁面
(2)發送的數據錯誤。會報400的狀態碼,通常爲參數錯誤
進行異步請求時,產生跨域了
出現了非法語句
找不到引入的.js文件。可能緣由:沒有引入文件,或者js文件名字拼寫錯誤(好比,少了文件後綴.)
文件沒有被找到,說明文件引用的路徑有問題,或文件損壞
看完文章,若是以爲對您的平常開發有用的話,別忘記點贊哦~^_^