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 字符串常数未结束 字符串常数后面没有用结束的单引号或双引号。字符串常数必须用单引号或双引号引起来。 注意: 可以使用单引号或双引号作为匹配符,双引号可以包含在单引号所引起来的字符串中,单引号也可以包含在双引号引起来的字符串中。

你可能感兴趣的:(JavaScript)