假如不够细致,任何编程语言都有一些可能发生错误的地方,而且每种语言都有其非凡之处。例如,对于 null 值: JScript 中这个值与 C 或 C++ 语言中的 Null 值所起的作用是不一样的。
下面提供了一些在编写 JScript 脚本时可能碰到的问题。
语法错误
由于编程语言中的语法比自然语言的语法要严格得多,因此在编写脚本时对细节应倍加关注。例如,假如您本意是将字符串作为某个参数,但是在键入时忘了使用引号引起来,就会产生问题。
脚本解释顺序
对 JScript 的解释是 Web 浏览器的 HTML 语法分析处理的一部分。因此,假如在文档的 <HEAD> 标识中放置了一个脚本,则将在检查所有的 <BODY> 标识之前加以解释。假如在 <BODY> 标识中将创建对象,但由于在分析处理 <HEAD> 标识时这些对象尚不存在,因而不能被脚本操作。
注重 本情况特定于 IE。ASP 和 WSH 具有不同的运行模式(其他宿主亦是)。
自动类型强制
JScript 是一种具有自动强制的自由类型语言。因此,尽管实际上不同类型的值是不相等的,但对下述示例中的表达式求值都将得到 true。
"100" == 100;
false == 0;
要核对类型与值都一致,用“严格相等”运算符(===)。下面两个表达式的值为 false:
"100" === 100;
false === 0;
运算符优先级
在对表达式求值时某个特定运算符的执行主要是根据 运算符优先级 ,而不是表达式的位置。因此,在下面的示例中,乘法将先于减法执行,尽管在该表达式中第一个出现的运算符是减法。
theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;
对对象使用 for...in 循环
当使用 for...in 循环对某个对象的属性进行遍历时,不必预先确定或治理将要指定给该循环计数器变量的对象字段的顺序。此外,在该语言的不同实现方案中该顺序可能会不一样。
with 要害字
with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。
this 要害字
尽管可以在对象的定义范围内使用 this 要害字来引用该对象本身,但是当函数不是该对象的定义时,就不能象普通情况那样使用 this 或类似的要害字来引用当前的执行函数。假如该函数被指定为某个对象的方法,则可以在该函数内使用 this 要害字来引用该对象。
编写一个脚本,该脚本在 IE 中写脚本
当解释程序碰到</SCRIPT>标记时会终止当前脚本。要显示"</SCRIPT>" 本身,请将其改写为至少两个字符串,例如 "</SCR" 和 "IPT>",这样就可以在输出语句中将其连接在一起。
IE 中的隐式窗口引用
由于同时可以打开多个窗口,任何隐式的窗口引用都被指向当前窗口。对于其他窗口必须使用显式引用。