JScript 语法错误是指当 JScript 语句违反了 JScript 脚本语言的一条或多条语法规则时导致的错误。JScript 语法错误发生在程序编译阶段,在开始运行该程序之前。
十进制
十六进制
说明
1001
800A03E9
内存不足
1002
800A03EA
1003
800A03EB
1004
800A03EC
1005
800A03ED
1006
800A03EE
1007
800A03EF
1008
800A03F0
1009
800A03F1
1010
800A03F2
1011
800A03F3
1012
800A03F4
1013
800A03F5
无效数
1014
800A03F6
1015
800A03F7
1016
800A03F8
1018
800A03FA
1019
800A03FB
1020
800A03FC
1023
800A03FF
1024
800A0400
1025
800A0401
1026
800A0402
1027
800A0403
一条 “switch” 语句中只能有一个 “default”
1028
800A0404
1029
800A0405
1030
800A0406
1031
800A0407
1032
800A0408
1033
800A0409
1034
800A040A
需要“var”
1035
800A040B
语法错误
所创建的语句违反了一条或多条 JScript 的语法规则。
要改正此错误
根据所给定的行号检查程序的语法。
查找不匹配的圆括号或中括号。
需要 ':'
试图创建一个使用三目条件运算符的表达式,但是在第二操作数和第三操作数之间没有包括冒号。三目(三个操作数)条件操作符在第二个(为真)和第三个(为假)操作数之间一定要有一个冒号。
要改正此错误
在第二个和第三个操作数之间插入一个冒号。
需要 ';'
试图在一行内写多条语句,但没有用分号将各条语句加以分隔。分号是用来结束语句的。可以在一行内写多条语句,不过每条语句后都必须加分号以便分开。
要改正此错误
在每条语句后写一个分号。
确保函数调用正确使用圆括号。
确保没有忘记 for 循环头部中的分号。
需要 '('
试图用一组圆括号来括住一个表达式,但缺少开始圆括号。有些表达式必须用一组开始圆括号和结束圆括号括住。
for (initialize; test; increment) { statement; }
要改正此错误
给求值表达式添加左圆括号。
需要 ')'
试图用一组圆括号来括住一个表达式,但缺少结束圆括号。有些表达式必须用一组开始圆括号和结束圆括号括住。
for (initialize; test; increment) { statement; }
要改正此错误
给求值表达式添加右圆括号。
需要 ']'
引用数组元素时缺少右中括号。引用数组元素的任何表达式都必须包括左中括号和右中括号。
要改正此错误
给引用该数组无素的表达式添加右中括号。
需要 '{'
没有用左大括号来标记函数体的开始位置。对于组成函数体的代码,即使只有一行,也必须包含在左大括号和右大括号中。请注意函数体对大括号的使用要比循环中的使用更严格。
要改正此错误
添加左大括号,标记函数体的开始。
需要 '}'
没有用右大括号来标记函数体、循环、代码块或者对象初始化软件的结束位置。这种错误的一个示例是:for 循环只有标记循环体起点的左括号。
要改正此错误
添加右大括号,标记函数、循环、语句块、或者对象初始化的结束位置。
需要标识符
在需要标识符的上下文中,使用了不是标识符的内容。标识符可以是:
变量,
属性,
数组,
函数名称。
要改正此错误
更改该表达式,使标识符出现在等号的左边。
需要 '='
试图创建一个供条件编译语句使用的变量,但在变量和要赋给该变量的值之间缺少一个等号。
要改正此错误
添加一个等号。例如: @set @myvar1 = 1
需要 '/'
试图创建一个正则表达式文字,但没有包括其中的斜杠 (/)。正如字符串文字表示为一对单引号内的字符一样,正则表达式文字则表示为一对斜杠 (/) 内的字符。
要改正此错误
插入一个结束斜杠,标志正则表达式的结束位置。
非法字符
JScript 编译器认为由字符(或多个字符)组成的标识符非法。合法字符应遵守下述规则:
第一个字符必须为ASCII字母(大写或小写)或下划线 (_)。
后续字符可以是ASCII字母、数字和下划线。
标识符名称不能为保留字。
要改正此错误
避免使用不属于 JScript 语言定义部分的字符。
字符串常数未结束
字符串常数后面没有用结束的单引号。字符串常数必须用单引号引起来。
注意 可以使用单引号或双引号作为匹配符,双引号可以包含在单引号所引起来的字符串中,单引号也可以包含在双引号引起来的字符串中。
要改正此错误
给字符串的结束处添加单引号。
注释未结束
多行注释块没有结束。多行注释块以一个 "/*" 组合开始,并以"*/" 组合结束。下面是示例:
/* 这是注释 这是同一注释的另一部分。*/
要改正此错误
请确保以“*/” 结束多行注释。
函数外有 'return' 语句
在代码的全部范围内使用。return 语句只能出现在函数体内。
使用 () 操作符调用函数是一个表达式。所有的表达式都有值;return 语句用来指定由函数返回的值。通常的形式是:
return [ expression ];
当执行到 return 语句时,首先对该表达式求值并将其返回作为该函数的值。如果没有表达式,则返回 undefined 。
当 return 语句执行完毕后,该函数的执行就终止了,即使还有函数体中仍有其它语句。这个规则的一个例外是如果该 return 语句发生在某个 try 块内,且有相应的 finally 块,那么 在该函数返回前将执行 finally 块中的代码。
如果函数是由于到达函数体结束处而不是因为执行return语句返回,则返回值为 undefined(表示该函数的结果无法作为大表达式的部分。
要改正此错误
从代码的主要部分中删除 return 语句。(全部范围)。
在循环外不能有 'break'
试图在循环外使用
break 关键词。
break 关键词用来结束一个循环或 switch 语句。它必须位于循环体内或 switch 语句内。
例外
break 关键字后面可以带一个标签。
break labelname;
只有在嵌套式循环或 switch 语句中并且需要跳出的循环不是最内层循环时,才需要使用这种带标签形式的
break 关键词。
要改正此错误
请确保
break 关键词位于封闭的循环或 switch 语句内。
在循环外不能有 'continue'
试图在循环外使用 continue 语句。只有在下述语句内才可以使用 continue 语句:
do-while 循环,
while 循环,
for 循环,
for/in 循环。
要改正此错误
请确保 continue 语句位于下述语句的内部:
do-while 循环,
while 循环,
for 循环,
for/in 循环。
需要十六进制数
创建了一个不正确的 Unicode 转义序列。Unicode 转义序列以 \u 开头,后跟整整四位十六进制数(不多,也不少)。Unicode 十六进制数不仅包含数字 0-9,大写字母 A-F,还有小写字母 a-f。下面的示例演示了正确形成的 Unicode 转义序列。
z = "\u1A5F";
要改正此错误
请确保 Unicode 十六进制数是以 \u 开头的,只包含数字0-9,大写字母 A-F、小写字母 a-f;并组成四个数字。
注意 如果希望在字符串中使用文字文本 t \u,请使用两个短斜杠 _(\\u) – 一个用来将第一个反斜杠转义。
需要 'while'
在 do … while 循环中没有包含 while 条件。一条 do 语句必须有相应的 while 测试。
要改正此错误
在循环体结束处加上 while 测试语句。
标签定义重复
创建新标签时给定的名称与现有标签名称重复。标签可以用来标记语句块,但在一个指定范围内必须是唯一的。
要改正此错误
请确保程序中所使用的所有标签在名自的作用域内都是唯一的。
未找到标签
所引用的标签不存在。标签可用来标记代码块,不过必须在特定范围内,而且必须唯一。
要改正此错误
确认没有拼错标签名称。
确保所有标签所引用的都是在当前作用域内定义过的标签(包括在作用域之前所做的定义)。
一条 'switch' 语句中只能有一个 'default'
在一个 switch 语句中试图使用多个 default 语句。Default分支总是位于 switch 语句的最后一个分支语句(也就是匹配失败的情形)。
要改正此错误
从 switch 语句中删除任何多余的default 分支语句(在switch 语句中使用了多个default 语句)。
需要标识符、字符串或者数字
使用了不正确的文字语法来声明对象文字。对象文字的属性必须是标识符、字符串或一个数。对象文字(也称为“对象初始化程序”)由用逗号分割的属性:值对组成,所有值对都用括号括起来。例如:
var point = {x:1.2, y:-3.4};
要改正此错误
请确保使用了正确的文字语法。
需要 '@end'
试图创建一个条件编译的代码块,但在最后没有@end 语句。通过把JScript 语句放在 @if/@end 块内,可以实现条件编译。
要改正此错误
添加相应的 @end 语句。
条件编译已关闭
在没有先启用条件编译的情况下试图使用条件编译变量。打开条件编译将告诉 JScript 编译器要解释那些以 @ 开头作为条件编译变量的标识符。使用下面的语句作为条件代码的起始语句就可以打开条件编译:
/*@cc_on @*/
要改正此错误
在条件代码的起始处添加下面的语句:
/*@cc_on @*/
需要常数
试图在条件编译测试语句中使用一个(非条件编译)变量。条件编译测试语句的值必须为一个常数。
要改正此错误
用文字替代该变量。
用条件编译变量替代该变量。
需要 '@'
试图使用 @set 语句创建一个用于条件编译语句的变量,但在变量名称前没有 @ 符号。
要改正此错误
立即在变量名之前添加一个 @ 符号。例如: @set @myvar = 1
需要 'catch'
使用了处理异常的try 语句块,但没有些相应的 catch 语句。异常处理机制需要将那些可能失败的代码,连同当异常发生后不会执行的代码一起,包在一个 try 语句块中。发生异常时通过使用 throw 语句将异常从 try 语句块中抛出,并被 try 语句块外的一个或多个catch 语句抓获。
要改正此错误
添加相应的 catch 语句块。
试试使用 finally 语句块而不使用 catch语句块。
Throw 的后面跟有一个表达式,且在同一源代码行上
使用了 throw 关键字,但在同一行内没有紧接一个表达式。一个 throw 语句由两部分组成:throw 关键字,后面紧跟待抛出的表达式。例如;
if (denominator == 0) { throw new DivideByZeroException(); }
不能将这两个组件分成两行。
要改正此错误
请确保 throw 关键字和待抛出的表达式在同一行。