JavaScript錯誤詳情

JavaScript錯誤

一、JavaScript運行錯誤

​ JavaScript 運行時錯誤是指當 JavaScript 腳本試圖執行一個系統不能運行的動作時導致的錯誤。當正在運行腳本、計算變量表達式、或者正在動態分配內存時出現 JavaScript 運行時錯誤時。

錯誤號錯誤描述解析
5029數組長度必須爲一有限正整數在調用 Array 構造函數時使用的參數不是自然數(所謂自然數就是零加上正整數集合)。
5030必須賦給數組長度一個有限正數在對現有 Array 對象設置其 length 屬性時,所指定的數組長度不是正整數,也不是零。如果給某個 Array 對象的 length 屬性所賦的值時爲負數或不是數值 (NaN) 時,就會產生這個錯誤。請注意 JavaScript 會自動將小數數值轉換爲整數。
5028需要 Array 或 arguments 對象沒有將數組作爲參數。這個錯誤只在 Function.prototype.apply方法中發生。如果使用這個函數,則該函數的第二個參數要麼是 Array 對象,要麼是 Arguments 對象。
5010需要 Boolean試圖用一個不是 Boolean 類型的對象來調用 Boolean.prototype.toString 或者 Boolean.prototype.valueOf 方法。這種調用類型的對象必須是 Boolean 類型。
5003不能給函數返回值賦值試圖將一個值賦給函數結果。可以將函數結果賦給某個變量,但其本身不能用作變量。如果希望將一個新值賦給該函數本身,則不要圓括號(函數調用操作符)。
5000不能給 'this' 賦值試圖給 this 賦值,this 是 JavaScript 關鍵字,表示: 當前正在執行某個方法的對象, 如果沒有當前方法(或該方法不屬於任何其它對象),則是指全局對象。 所謂方法就是由對象調用的 JavaScript 函數。在一個方法內, this 關鍵字代表調用該方法的對象的引用(這種情況下,就是指使用 new 操作符調用類構造函數所創建的對象)。在一個方法內可以使用 this 來引用當前對象,但不能對其賦予新的值。
5006需要 Date 對象試圖對一個不是Date 類型的對象調用 Date.prototype.toStringDate.prototype.valueOf 方法。這種調用類型的對象必須是 Date 類型。
5015需要 Enumerator 對象試圖對一個非 Enumerator 類型的對象調用 Enumerator.prototype.atEnd、 Enumerator.prototype.item、 Enumerator.prototype.moveFirst 或者 Enumerator.prototype.moveNext 方法。這種調用類型的對象必須是 Enumerator 類型。
5022異常拋出,但無法抓住在代碼中包括了一條 throw 語句,但沒有將其包含在某個 try 語句塊內,或者沒有相關的 catch 語句塊來捕獲錯誤。異常是在 try 語句塊中使用 throw 語句被拋出,並且應該由 try 語句塊外的 catch 語句抓住。
5020正則表達式中缺少“)”試圖創建一個正則表達式捕獲、斷言和組合,但不包括結束圓括號。正則表達式中的圓括號有多個用途。首先,它們主要用來抓捕子表達式,指定斷言、或將模式組合,從而通過 *、+、? 等等使這些項被看作一個單一的單位。
5019正則表達式中缺少“]試圖創建一個用於正則表達式匹配的字符類,但是沒有右中括號。單個的文字字符組合可以用括號括起來表示一個字符類。一個字符類可以匹配其中包含的任一字符。例如,/abc]/ 可以匹配字母 “a”, “b”, 或 “c” 的任何一個。
5023函數沒有合法的 Prototype 對象試圖使用 instanceof 來確定一個對象是否是從某個特定函數類派生而來,但重新定義的該對象的prototype 屬性要麼是空的,要麼是外部對象類型(都不是有效的JavaScript 對象)。外部對象可能來自主機對象模型(例如, Internet Explorer 的產品和 window 產品,或一個外部的COM 對象)。
5002需要 Function 對象試圖對一個不是 Function 對象調用 Function prototype 方法,或者在函數調用上下文中使用了對象。
5008非法賦值試圖對一個只讀的標識符賦值。不能對只讀的標識符賦值。例如,主機定義對象和外部 COM 對象。
5021字符集範圍無效試圖創建的正則表達式含有無效的字符集範圍。字符集的範圍必須只能是單個字符的變化,諸如a-z 或 0-9;不能在字符集中包括諸如 \w 的字符類。字符集範圍的第一個字符也必須位於範圍中第二個字符的前面。
5014需要 JavaScript 對象試圖將一個非-JavaScript 對象傳給需要 JavaScript對象的內置函數。各種內置函數都需要在 JavaScript 中定義的對象(與主機定義的對象和控件之類的外部組件相對)。
5001需要 Number 類型試圖對一個不是Number 類型的對象調用 Number.prototype.toStringNumber.prototype.valueOf 方法。這種調用類型的對象必須是Number 類型。
5007需要 Object 類型試圖對一個不是Object 類型的對象調用 Object.prototype.toStringObject.prototype.valueOf 方法。這種調用類型的對象必須是 Object 類型。
5012需要對象的成員試圖對某個對象的數據成員執行某個操作,但該成員不存在。
5016需要正則表達式對象試圖對RegExp類型對象之外的其他對象調用 RegExp.prototype.toStringRegExp.prototype.valueOf方法。這種調用的類型必須是 RegExp 對象。
5005需要 String試圖對String對象類型之外的其他類型對象調用String.prototype.toStringString.prototype.valueOf 方法。這種調用的類型必須是 String 類型。
5017正則表達式語法錯誤查找字符串的結構違反了一條或多條關於 JavaScript 正則表達式的語法規則。
5026小數部分的位數越界試圖將一個非法參數傳遞給Number.prototype.toExponential()。函數toExponential() 的參數爲 0 到 20(含 20)之間。
5027精度越界試圖將一個非法參數傳遞給 Number.prototype.toPrecision。 給 toPrecision 的參數必須爲 1 到 21(含21)之間。
5025待解碼的 URI 編碼非法試圖對一個不正確 URI(通用資源標識符)進行解碼。URI 具有特殊的語法;絕大多數非字母數字字符在用於 URI 必須加以編碼。可以使用 encodeURIencodeURIComponent 方法從一個標準的 JavaScript 字符串創建一個 URI。
5024待解碼的 URI 包含有非法字符試圖將字符串編碼得到 URI(通用資源標識符),但是包含非法字符。儘管字符串中的絕大多數字符都是合法的,可以轉換爲 URI,但有些 Unicode 字符序列是非法的。
5009未定義標識符JavaScript 編譯器不認識試圖使用的標識符。當出現下述情況時,返回未定義值: 不存在的變量;變量已聲明,但從未對其賦值;對象屬性不存在。
5018未預期的限定符在組織正則表達式的查找模式時,創建了一個帶有非法循環因子的模式元素。
5013需要 VBArray所提供的對象不是所需要的 Visual Basic 中的 safeArray。new VBArray(safeArray);VBArrays 是隻讀的,且不能直接被創建。safeArray 參數爲一個 VBArray 值,並且在被傳遞給 VBArray構造函數之前必須獲得一個 VBArray 值。這個值只能通過檢索現有的 ActiveX 或其他對象得到。

二、JavaScript語法錯誤

​ JavaScript 語法錯誤是指當 JavaScript 語句違反了 JavaScript 腳本語言的一條或多條語法規則時導致的錯誤。JavaScript 語法錯誤發生在程序編譯階段,在開始運行該程序之前。

錯誤號錯誤描述解析
1019在循環外不能有“break”試圖在循環外使用 break 關鍵詞。break 關鍵詞用來結束一個循環或 switch 語句。它必須位於循環體內或 switch 語句內。例外:break 關鍵字後面可以帶一個標籤。如:break labelname; 只有在嵌套式循環或 switch 語句中並且需要跳出的循環不是最內層循環時,才需要使用這種帶標籤形式的break 關鍵詞。
1020在循環外不能有“continue”試圖在循環外使用 continue 語句。只有在下述語句內纔可以使用 continue 語句: do-while 循環, while 循環, for 循環, for/in 循環。
1030條件編譯已關閉在沒有先啓用條件編譯的情況下試圖使用條件編譯變量。打開條件編譯將告訴 JavaScript 編譯器要解釋那些以 @ 開頭作爲條件編譯變量的標識符。
1027一條 “switch” 語句中只能有一個 “default”在一個 switch 語句中試圖使用多個 default 語句。Default分支總是位於 switch 語句的最後一個分支語句(也就是匹配失敗的情形)。
1005需要“(”試圖用一組圓括號來括住一個表達式,但缺少開始圓括號。有些表達式必須用一組開始圓括號和結束圓括號括住。
1006需要“)”試圖用一組圓括號來括住一個表達式,但缺少結束圓括號。有些表達式必須用一組開始圓括號和結束圓括號括住。
1012需要“/”試圖創建一個正則表達式文字,但沒有包括其中的斜槓 (/)。正如字符串文字表示爲一對單引號內的字符一樣,正則表達式文字則表示爲一對斜槓 (/) 內的字符。
1003需要“:”試圖創建一個使用三目條件運算符的表達式,但是在第二操作數和第三操作數之間沒有包括冒號。三目(三個操作數)條件操作符在第二個(爲真)和第三個(爲假)操作數之間一定要有一個冒號。
1004需要“;”試圖在一行內寫多條語句,但沒有用分號將各條語句加以分隔。分號是用來結束語句的。可以在一行內寫多條語句,不過每條語句後都必須加分號以便分開。
1032需要“@”試圖使用 @set 語句創建一個用於條件編譯語句的變量,但在變量名稱前沒有 @ 符號。
1029需要“@end”試圖創建一個條件編譯的代碼塊,但在最後沒有@end 語句。通過把JavaScript 語句放在 @if/@end 塊內,可以實現條件編譯。
1007需要“]引用數組元素時缺少右中括號。引用數組元素的任何表達式都必須包括左中括號和右中括號。
1008需要“{”沒有用左大括號來標記函數體的開始位置。對於組成函數體的代碼,即使只有一行,也必須包含在左大括號和右大括號中。請注意函數體對大括號的使用要比循環中的使用更嚴格。
1009需要“}”沒有用右大括號來標記函數體、循環、代碼塊或者對象初始化軟件的結束位置。這種錯誤的一個示例是:for 循環只有標記循環體起點的左括號。
1011需要“=”試圖創建一個供條件編譯語句使用的變量,但在變量和要賦給該變量的值之間缺少一個等號。
1033需要“catch”使用了處理異常的try 語句塊,但沒有些相應的 catch 語句。異常處理機制需要將那些可能失敗的代碼,連同當異常發生後不會執行的代碼一起,包在一個 try 語句塊中。發生異常時通過使用 throw 語句將異常從 try 語句塊中拋出,並被 try 語句塊外的一個或多個catch 語句抓獲。
1031需要常數試圖在條件編譯測試語句中使用一個(非條件編譯)變量。條件編譯測試語句的值必須爲一個常數。
1023需要十六進制數創建了一個不正確的 Unicode 轉義序列。Unicode 轉義序列以 \u 開頭,後跟整整四位十六進制數(不多,也不少)。Unicode 十六進制數不僅包含數字 0-9,大寫字母 A-F,還有小寫字母 a-f。下面的示例演示了正確形成的 Unicode 轉義序列。
1010需要標識符在需要標識符的上下文中,使用了不是標識符的內容。標識符可以是: 變量, 屬性, 數組, 函數名稱。
1028需要標識符、字符串或者數字使用了不正確的文字語法來聲明對象文字。對象文字的屬性必須是標識符、字符串或一個數。對象文字(也稱爲“對象初始化程序”)由用逗號分割的屬性:值對組成,所有值對都用括號括起來。
1024需要“while”do … while 循環中沒有包含 while 條件。一條 do 語句必須有相應的 while 測試。
1014非法字符JavaScript 編譯器認爲由字符(或多個字符)組成的標識符非法。合法字符應遵守下述規則: 第一個字符必須爲ASCII字母(大寫或小寫)或下劃線 (_)。 後續字符可以是ASCII字母、數字和下劃線。 標識符名稱不能爲保留字。
1026未找到標籤所引用的標籤不存在。標籤可用來標記代碼塊,不過必須在特定範圍內,而且必須唯一。
1025標籤定義重複創建新標籤時給定的名稱與現有標籤名稱重複。標籤可以用來標記語句塊,但在一個指定範圍內必須是唯一的。
1018函數外有 'return' 語句在代碼的全部範圍內使用。return 語句只能出現在函數體內。使用 () 操作符調用函數是一個表達式。所有的表達式都有值;return 語句用來指定由函數返回的值。通常的形式是:return [ expression ];當執行到 return 語句時,首先對該表達式求值並將其返回作爲該函數的值。如果沒有表達式,則返回 undefined 。當 return 語句執行完畢後,該函數的執行就終止了,即使還有函數體中仍有其它語句。這個規則的一個例外是如果該 return 語句發生在某個 try 塊內,且有相應的 finally 塊,那麼 在該函數返回前將執行 finally 塊中的代碼。如果函數是由於到達函數體結束處而不是因爲執行return語句返回,則返回值爲 undefined(表示該函數的結果無法作爲大表達式的部分。
1002語法錯誤所創建的語句違反了一條或多條 JavaScript 的語法規則。
1035“Throw”的後面必須跟有一個表達式,且在同一源代碼行上使用了 throw 關鍵字,但在同一行內沒有緊接一個表達式。一個 throw 語句由兩部分組成:throw 關鍵字,後面緊跟待拋出的表達式。
1016註釋未結束多行註釋塊沒有結束。多行註釋塊以一個 "/*" 組合開始,並以"*/" 組合結束。
1015字符串常數未結束字符串常數後面沒有用結束的單引號或雙引號。字符串常數必須用單引號或雙引號引起來。 注意: 可以使用單引號或雙引號作爲匹配符,雙引號可以包含在單引號所引起來的字符串中,單引號也可以包含在雙引號引起來的字符串中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章