JS錯誤信息類型


1.SyntaxError 語法錯誤

①變量名不規范

// 變量名不規范
var 1 = 1;

未被捕獲的語法錯誤,這個錯誤是js機制自動拋出來的 意外的數字

// 下面兩個是同一種情況
var 1a = 1; function 1test(){}

無效或意外的標記

// 關鍵字賦值
new = 5;

意外的標記 =

下面最后加了冒號

// 基本的語法錯誤
var a = 5:

意外的標記 :


2.ReferenceError 引用錯誤

// 變量或者函數未被聲明
test()

test沒有被定義

// 給無法被賦值的對象賦值的時候
var a = 1 = 2
var a = 2; console.log(a) = 3

無效的左側賦值


3.RangeError 范圍錯誤

// 數組長度為負數時
var arr = [1,2,3] arr.length = -2

無效的數組長度

// 對象方法參數超出可行范圍 
var num = new Number(66.66); console.log(num.toFixed(-1));

數字參數參數必須在0到100


4.TypeError 類型錯誤

// 調用不存在的方法
123()

123不管有沒有定義 它都不是一個方法 根本就沒有判斷定義了沒有,先判斷類型,是不是屬於一個function,如果是一個function 后面就可以跟括號

var obj = {}; obj.say();

並沒有在obj里找到say這個方法,這個時候就會報這個錯誤 因為 點 后跟的是屬性名但是帶了括號,屬性不可能像方法一樣執行, 所以要看是不是方法,如果say不帶括號就不會報錯,不帶括號時會認為是個屬性但沒有賦值

// 實例化原始值的問題
var a = new  'string';

new后面必須要是一個構造器 ,new一個原始值會報錯 new后要跟函數 不管是構造函數還是普通函數,只要new函數 就會有實例化 'string' 不是函數就會報錯

var a = new  123;

這個和上面情況一樣,不是構造函數


5.URIError URI錯誤

URI 統一資源標識符 UNIFORM RESOURCE IDENTIFIER
URL 統一資源定位符 UNIFORM RESOURCE LOCATOR
URN 統一資源名稱 UNIFORM RESOURCE NAME
URL和URN是URI的子集,屬於URI
URL有協議有域名有資源空間 通過一個地址能訪問到特定的頁面
URN 沒有了URL中的協議 相當於一個id 名字 指代了資源的唯一性 所以叫NAME
let str = "測試字符"; let encodeStr = encodeURI(str); console.log(encodeStr); // %E6%B5%8B%E8%AF%95%E5%AD%97%E7%AC%A6
let decodeStr = decodeURI(encodeStr); console.log(decodeStr); // 測試字符
上面是使用encodeURI方法把中文轉為中文編碼字符 是js內置的方法,
再使用decodeURI方法把中文編碼字符轉為中文,也是js內置的方法 ,接下來就隨便輸個中文編碼 看能不能轉成中文
let str = "%ef%erffv"; console.log(decodeURI(str));

URI不符合常規的


 6.EvalError eval函數執行錯誤

現在很少見 因為很少使用eval方法 (不知道怎么讓它報錯)
es3開始 eval()函數不推薦使用,有性能問題, 難調試, input獲取的值和eval混在一起可能會有安全隱患
eval()最大的作用是字符串里寫js是可以執行的
eval("var a = 1;console.log(a)")

var obj = { a:1, b:2 } console.log(eval("obj"));

打印的不是字符串obj,而是一個對象 換成 console.log(eval(obj)) 也是一樣的

然而eval()方法最大的用處不是在這里
json字符串 使用eval()方法后會變成json對象
eval(jsonStr)
json是用來存儲數據的,json字符串和json對象 里面不可以嵌有方法,如果里面寫的有方法 就是一個普通的對象

這六種錯誤都可以人為的拋出
var error = new Error("代碼錯誤了") console.log(error);

會直接出來Error
人為的實例化一個錯誤 可以實例化構造函數
new SyntaxError("代碼錯誤")
每一種錯誤類型都對應了一個構造函數,這些構造函數都可以通過實例化來輸出響應的錯誤
如果想輸出錯誤變成紅色的 使用console.error()方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM