在學(xué)習(xí)js的過程中我們會遇到很多大大小小的錯誤提示
解決錯誤前,首先要學(xué)會閱讀報(bào)錯信息
eg:Uncaught TypeError: ... is not a function
Uncaught 表示沒有被catch語句捕獲到的錯誤
TypeError 是錯誤類型
... is not a function 是消息體
整體意思就是: 代碼嘗試將...當(dāng)作函數(shù)來使用,但是該...并不是一個函數(shù)
1.Uncaught TypeError: Cannot read property '' of undefined
常見的一種是在渲染 UI 組件時對于狀態(tài)的初始化操作不當(dāng),當(dāng)你讀取一個未定義的對象的屬性或調(diào)用其方法時,這個錯誤會在 Chrome 中出現(xiàn)。
2.TypeError: ‘undefined’is not an object
這是在 Safari 中讀取屬性或調(diào)用未定義對象上的方法時發(fā)生的錯誤,Safari 使用了不同的錯誤消息提示語。
3.TypeError: 'null' is not an object
這是在 Safari 中讀取屬性或調(diào)用空對象上的方法時發(fā)生的錯誤,Safari 使用了不同的錯誤消息提示語。
undefined 通常是一個尚未分配的變量,而 null 表示該值為空。 要驗(yàn)證它們不相等,請嘗試使用嚴(yán)格的相等運(yùn)算符 ===
這種錯誤可能發(fā)生場景是:在加載元素之前嘗試在 JavaScript 中使用元素。 因?yàn)?DOM API 對于空白的對象引用返回值為 null。
4.(unknown): Script error
當(dāng)未捕獲的 JavaScript 錯誤(通過window.onerror處理程序引發(fā)的錯誤,而不是捕獲在try-catch中)被瀏覽器的跨域策略限制時,會產(chǎn)生這類的腳本錯誤。這是一種瀏覽器安全措施,旨在防止跨域傳遞數(shù)據(jù),否則將不允許進(jìn)行通信。
5.TypeError: Object doesn’t support property
這是您在調(diào)用未定義的方法時發(fā)生在 IE 中的錯誤。 您可以在 IE 開發(fā)者控制臺中進(jìn)行測試。
6.TypeError: ... is not a function
調(diào)用未定義的函數(shù)時,在 Chrome 中產(chǎn)生的錯誤
7.Uncaught RangeError: Maximum call stack
當(dāng)你調(diào)用一個不終止的遞歸函數(shù)時或者將值傳遞給超出范圍的函數(shù),會報(bào)出的錯,檢查函數(shù)的遞歸調(diào)用,確保函數(shù)不是無限遞歸的
- TypeError: Cannot read property ‘length’of undefined
因?yàn)樽x取未定義變量的長度屬性,通常會在數(shù)組中找到定義的長度,但是如果數(shù)組未初始化或者變量名稱在另一個上下文中隱藏,則可能會遇到此錯誤。
var testArray = ["Test"];
function testFunction(testArray) {
for (var i = 0; i < testArray.length; i++) {
console.log(testArray[I]);
}
}
testFunction();
當(dāng)你用參數(shù)聲明一個函數(shù)時,這些參數(shù)變成了函數(shù)作用域內(nèi)的本地參數(shù)。這意味著即使你函數(shù)外有名為 testArray 的變量,在一個函數(shù)中具有相同名字的參數(shù)也會被視為本地參數(shù)。
9.Uncaught TypeError: Cannot set property ... of undefined
嘗試訪問一個未定義的變量時,它總是返回 undefined,我們不能獲取或設(shè)置任何未定義的屬性。
10.ReferenceError: ... is not defined
當(dāng)您嘗試訪問未定義的變量或超出當(dāng)前范圍的變量時,會引發(fā)此錯誤。
11.Uncaught exception: ReferenceError: Cannot assign to ‘this’
嘗試給一個不能被賦值的變量賦值時將發(fā)生該錯誤,確保不給函數(shù)函數(shù)的返回值或 this 關(guān)鍵字賦值。
12.Uncaught TypeError: Converting circular structure toJSON
該錯誤總是發(fā)生在使用 JSON.stringify 序列化一個存在循環(huán)引用的對象時,移除將要被轉(zhuǎn)換為 JSON 字符串對象內(nèi)部的循環(huán)引用。
13.Unexpected token ;
通常發(fā)生在缺少括號或分號時,該錯誤提示的行號有時并不能指向正確的位置
14.Uncaught SyntaxError: Unexpected token ILLEGAL
字符串字面量缺少閉合的引號,確保所有字符串都包含閉合的引號。