3.3.2 循环和数组
当处理一种常见的JavaScript元素(数组)的时候,你会发现循环有了用武之地。还记得2.8节介绍过,数组是数据的一个集合。我们可以把数组看做一种购物清单。当我们要去购物的时候,实际上是执行一种循环:在商店寻找清单上的一件商品,找到之后,将它放入购物车;然后继续寻找清单上的下一件商品,再放入购物车,以此类推;直到已经遍历完整个清单。然后就结束了(这就像是退出循环),并且去收银台结账(换句话说,继续程序的下一个步骤)。
在JavaScript中,可以使用循环来遍历数组中的项目并且在每个项目上执行一项任务。例如,假设我们要构建一个程序来生成日历。这个日历完全是使用JavaScript生成的,并且我们想要在日历上显示每一天是星期几。我们可能首先把星期几的名字存储到一个数组中,如下所示:
var days=['Monday','Tuesday','Wednesday','Thursday',?
'Friday','Saturday','Sunday'];
注意:上面代码中的8表示JavaScript代码的这些行属于单独的一行。由于本书页面的宽度有限,有时候一行代码无法在单独一行文字中显示,因此本书使用8符号来表示应该出现在单独一行中的代码。如果你打算把这些代码输入到文本编辑器中,就要把它们作为长长的一行输入(并且省略掉8)。
现在遍历数组中的每个项目并在页面中显示。别忘了使用项目的索引值来访问数组中的一项。例如,上面的days数组的第一项(Monday),通过days[0]来访问。第二项是days[1],以此类推。
下面展示如何使用一个while循环来显示这个数组中的每一项:
var counter=0;
while(counter<days.length){
document.write(days[counter]+’,');
counter++;
}
第一行var counter=0设置(或者用程序员的话来说,叫做初始化)一个counter变量,它用作测试条件的一部分,也用作访问数组项目的索引。条件counter<days.length只是询问counter中存储的当前值是否小于数组的项数(别忘了,在2.8.2节介绍过,数组中项目的总数存储在数组的length属性中)。在这个例子中,该条件检查counter是否小于7(一个星期中的天数)。如果counter小于7,那么循环开始,星期几就会显示到页面上(后面跟着一个逗号和一个点号),并且,counter增加1(counter++和counter=counter+1是相同的,参见3.3.1节的“提示”部分)。在循环运行之后,再次尝试测试;循环继续运行,直到测试结果为false。这个过程如图3-6表示。
图 3-6 通过这个循环,条件测试了8次。最后一次测试询问7是否小于7。答案为false,因此,while语句完成,并且JavaScript解释器略过循环并继续脚本的下一部分。这个脚本的最终结果将是“Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday”