JScript 8.0
脚本疑难解答

所有编程语言都包含一些潜在的陷井,无论是新手还是经验丰富的用户都会始料不及。以下是您编写 JScript 脚本时可能遇到的一些潜在麻烦。

语法错误

由于编程语言中的语法要比自然语言中的语法要严格得多,所以在编写脚本时务必要严格地注意细节。例如,如果希望某个参数为字符串,但却忘记用引号将它括起来,就会出现错误。

脚本解释的顺序

在网页中,JScript 解释取决于每个浏览器的 HTML 分析过程。<HEAD> 标记内的脚本在 <BODY> 标记内的文本之前解释。因此,当浏览器分析 <HEAD> 元素时,在 <BODY> 标记中创建的对象不存在,脚本不能对这些对象进行处理。

Note注意

此行为是 Internet Explorer 所特有的。ASP 和 WSH 具有不同的执行模型(像其他宿主一样)。

自动类型强制

JScript 是具有自动强制的松散类型化语言。因此,尽管具有不同类型的值不全等,但下面的示例中的表达式的计算结果为 true

"100" == 100;
false == 0;

若要检查类型和值是否均相同,请使用全等运算符 ===。以下两个表达式的计算结果均为 false:

"100" === 100;
false === 0;

运算符优先级

在计算表达式时,运算执行的顺序取决于运算符优先级,而不是取决于表达式中运算符的顺序。因此,在下面的示例中,虽然表达式中减法运算符出现在乘法运算符之前,但是先计算相乘。

theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;

有关更多信息,请参见运算符优先级

将 for...in 循环用于对象

当脚本使用 for…in 循环逐个通过对象的属性时,将对象字段赋给循环计数器变量的顺序不一定能预测或控制。此外,在不同的语言实现中,顺序可能会有所不同。有关更多信息,请参见 for...in 语句

with 关键字

虽然 with 关键字为已存在于指定对象中的属性的寻址带来方便,但却不能用来为对象添加属性。若要在对象中创建新的属性,必须明确地引用该对象。有关更多信息,请参见 with 语句

this 关键字

虽然 this 关键字存在于对象定义内,但是如果当前执行的函数不是对象定义,则一般不能使用 this 或类似的关键字来引用该函数。如果将函数作为方法赋给对象,则脚本可以在函数内使用 this 关键字来引用该对象。有关更多信息,请参见 this 语句

编写在 Internet Explorer 或 ASP.NET 中编写脚本的脚本

当解释器遇到 </SCRIPT> 标记时,该标记将终止当前脚本。若要显示“</SCRIPT>”本身,请将其书写为两个或多个字符串(例如“</SCR”和“IPT>”),随后脚本可以在写出这两个字符串的语句中将它们串联在一起。

Internet Explorer 中的隐式窗口引用

因为可以同时打开多个窗口,所以任何隐式窗口引用均指向当前窗口。对于其他窗口,则必须使用显式引用。

请参见