JScript语法错误

JScript 语法错误是指当 JScript 语句违反了 JScript 脚本语言的一条或多条语法规则时导致的错误。JScript 语法错误发生在程序编译阶段,在开始运行该程序之前。
十进制十六进制说 明
1001800A03E9内存不足
1002800A03EA语法错误
1003800A03EB需要“:”
1004800A03EC需要“;”
1005800A03ED需要“(”
1006800A03EE需要“)”
1007800A03EF需要“]”
1008800A03F0需要“{”
1009800A03F1需要“}”
1010800A03F2需要标识符
1011800A03F3需要“=”
1012800A03F4需要“/”
1013800A03F5无效数
1014800A03F6非法字符
1015800A03F7字符串常数未结束
1016800A03F8注释未结束
1018800A03FA函数外有 ’return’ 语句
1019800A03FB在循环外不能有“break”
1020800A03FC在循环外不能有“continue”
1023800A03FF需要十六进制数
1024800A0400需要“while”
1025800A0401标签定义重复
1026800A0402未找到标签
1027800A0403一条 “switch” 语句中只能有一个 “default”
1028800A0404需要标识符、字符串或者数字
1029800A0405需要“@end”
1030800A0406条件编译已关闭
1031800A0407需要常数
1032800A0408需要“@”
1033800A0409需要“catch”
1034800A040A需要“var”
1035800A040B“Throw”的后面必须跟有一个表达式,且在同一源代码行上

语法错误

所创建的语句违反了一条或多条 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 关键字和待抛出的表达式在同一行。
posted on 2006-08-13 16:07 穷鬼 阅读(228) 评论(0)  编辑  收藏 所属分类: AJAX学习

只有注册用户登录后才能发表评论。


网站导航: