脚本疑难解答
更新:2007 年 11 月
所有编程语言都包含一些潜在的陷井,无论是新手还是经验丰富的用户都会始料不及。以下是您编写 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 代码