JS常見的報(bào)錯類型

在學(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ù)不是無限遞歸的

  1. 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
  字符串字面量缺少閉合的引號,確保所有字符串都包含閉合的引號。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,968評論 0 5
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會包括一個稱為形參的標(biāo)識符列表,這些參數(shù)在...
    PySong閱讀 685評論 0 0
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會包括一個稱為形參的標(biāo)識符列表,這些參數(shù)在...
    PySong閱讀 913評論 0 0
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會包括一個稱為形參的標(biāo)識符列表,這些參數(shù)在...
    PySong閱讀 384評論 0 0
  • 第5章 函數(shù)和函數(shù)式編程 5.1 引言函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)...
    VIVAFT閱讀 1,097評論 0 5

友情鏈接更多精彩內(nèi)容