3.3.3 for循环
JavaScript还提供了另一种类型的循环,叫做for循环,这是一种更加紧凑的形式(而且更容易令人混淆)。for循环通常用来重复一系列的步骤一定的次数,因此,它们通常包含某种类型的计数器变量、一个条件测试以及改变计数器变量的一种方法。在很多情况下,for循环可以实现和while循环相同的事情,而只需要寥寥数行代码。例如,下面是3.3.1节中的while循环:
var num=1;
while(num<=100){
document.write('Number'+num+’<br>');
num+=1;
}
可以使用一个for循环实现同样的效果,而只需要3行代码:
for(var num=1;num<=100;num++){
document.write('Number'+num+’<br>');
}
刚一开始,for循环可能看上去有点容易令人混淆,但是,一旦搞清楚了for语句的不同部分,它们就没那么难了。每个for循环以关键字for开始,后面跟着一对圆括号和一对花括号,圆括号中包含了3个部分。和while循环一样,花括号中的内容(在这个例子中是document.write('Number'+num+’<br>');)就是作为循环的一部分而执行的JavaScript代码。
表3-2说明了圆括号中的3个部分,但是,简单地说,第一部分(var num=1;)初始化了一个计数器变量。这个步骤只是在语句刚开始运行的时候发生一次。第二部分是条件,测试该条件看看循环是否运行;第三部分是在每次循环的末尾发生的一个操作,它通常改变计数器的值,因此,测试条件最终为false并且循环结束。
由于for循环提供了一种容易的方法来重复一系列步骤一定次数,它们对于遍历数组的元素效果很理想。图3-6中的while循环把数组中的每个项都显示到页面,可以使用一个for循环重新编写它,代码如下所示:
var days=['Monday','Tuesday','Wednesday','Thursday',?
'Friday','Saturday','Sunday'];
for(var i=0;i<days.length;i++){
document.write(days[i]+’,');
}
提示:优秀的程序员经常为for循环中的计数器变量使用一个非常简短的名字。在上面的代码中,字母i充当计数器的名字。一个字母的名字(i、j和z都很常用)很快就可以录入,并且由于这个变量除了运行循环以外不作他用,因此没必要提供一个像counter这样描述性强的名字。
到目前为止的例子都是计数到一定的次数然后停止循环,但是也可以反向计数。例如,假设我们想要按照相反的顺序来显示数组中的项目(换句话说,数组中的最后一项先显示),可以这么做:
var example=['first','second','third','last'];
for(var j=example.length;j>0;j—){
document.write(example[j-1]+’<br>');
}
在这个例子中,计数器变量j从数组中的总数(4)开始。每循环一次,测试j中的值是否大于0;如果是,运行花括号之间的代码。然后,从j中减去1(j——),然后再次运行测试。唯一的具有技巧的部分就是程序访问数组项目的方式(example[j-1])。既然数组索引从0开始,那么数组的最后一项的索引就是数组中项目总数减去1(参见2.8.2节的介绍)。这里,j从数组中的项目的总数开始,因此,为了访问最后一项,必须从j减去1以获取正确的项目。