脚本疑难解答

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

语法错误

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

脚本解释的顺序

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

提示

此行为是 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 中的隐式窗口引用

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

请参见

任务

使用 Visual Studio 编写 JScript 代码

概念

使用 Visual Studio 调试 JScript

其他资源

编写、编译、调试 JScript 代码