脚本解释顺序
对 JScript 的解释是 Web 浏览器的 HTML 语法分析处理的一部分。因此,如果在文档的 <HEAD> 标识中放置了一个脚本,则将在检查所有的 <BODY> 标识之前加以解释。如果在 <BODY> 标识中将创建对象,但由于在分析处理 <HEAD> 标识时这些对象尚不存在,因而不能被脚本操作。
注意 本情况特定于 IE。ASP 和 WSH 具有不同的运行模式(其他宿主亦是)。
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Javascript Problem</title>
- <script>
- var headObj=new Object();
- headObj.message="I can Do it!";
- alert(headObj.message);
- alert(headObj["message"]);
- // alert(bodyObj.message); 这里就会出现在未定义错误
- </script>
- </head>
- <body>
- <script language="JavaScript">
- var bodyObj=new Object();
- bodyObj.message="I am in the body";
- alert(bodyObj.message);
- </script>
- </body>
自动类型强制
JScript 是一种具有自动强制的自由类型语言。因此,尽管实际上不同类型的值是不相等的,但对下述示例中的表达式求值都将得到 true。
"100" == 100;
false == 0;
要核对类型与值都一致,用“严格相等”运算符(===)。下面两个表达式的值为 false:
"100" === 100;
false === 0;
对对象使用 for...in 循环
当使用 for...in 循环对某个对象的属性进行遍历时,不必预先确定或管理将要指定给该循环计数器变量的对象字段的顺序。此外,在该语言的不同实现方案中该顺序可能会不一样。
with 关键字
with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。
this 关键字
尽管可以在对象的定义范围内使用 this 关键字来引用该对象本身,但是当函数不是该对象的定义时,就不能象普通情况那样使用 this 或类似的关键字来引用当前的执行函数。如果该函数被指定为某个对象的方法,则可以在该函数内使用 this 关键字来引用该对象。