while (<循环条件>) <语句>;
比 for 循环简单,while 循环的作用是当满足<循环条件>时执行<语句>。while 循环的累加性质没有 for 循环强。<语句>也只能是一条语句,但是一般情况下都使用语句块,因为除了要重复执行某些语句之外,还需要一些能变动<循环条件>所涉及的变量的值的语句,否则一但踏入此循环,就会因为条件总是满足而一直困在循环里面,不能出来。这种情况,我们习惯称之为“死循环”。死循环会弄停当时正在运行的代码、正在下载的文档,和占用很大的内存,很可能造成死机,应该尽最大的努力避免。
break 和 continue
有时候在循环体内,需要立即跳出循环或跳过循环体内其余代码而进行下一次循环。break 和 continue 帮了我们大忙。
break;
本语句放在循环体内,作用是立即跳出循环。
continue;
本语句放在循环体内,作用是中止本次循环,并执行下一次循环。如果循环的条件已经不符合,就跳出循环。
例
for (i = 1; i < 10; i++) {
if (i == 3 || i == 5 || i == 8) continue;
document.write(i);
}
输出:124679。
switch 语句
如果要把某些数据分类,例如,要把学生的成绩按优、良、中、差分类,我们可能会用 if 语句:
if (score >= 0 && score < 60) {
result = ''fail'';
} else if (score < 80) {
result = ''pass'';
} else if (score < 90) {
result = ''good'';
} else if (score <= 100) {
result = ''excellent'';
} else {
result = ''error'';
}
看起来没有问题,但使用太多的 if 语句的话,程序看起来有点乱。switch 语句就是解决这种问题的最好方法。
switch (e) {
case r1: (注意:冒号)
...
[break;]
case r2:
...
[break;]
...
[default:
...]
}
这一大段的作用是:计算 e 的值(e 为表达式),然后跟下边“case”后的 r1、r2……比较,当找到一个相等于 e 的值时,就执行该“case”后的语句,直到遇到 break 语句或 switch 段落结束(“}”)。如果没有一个值与 e 匹配,那么就执行“default:”后边的语句,如果没有 default 块,switch 语句结束。
上边的 if 段用 switch 改写就是:
switch (parseInt(score / 10)) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
result = ''fail'';
break;
case 6:
case 7:
result = ''pass'';
break;
case 8:
result = ''good'';
break;
case 9:
result = ''excellent'';
break;
default:
if (score == 100)
result = ''excellent'';
else
result = ''error'';
}
其中 parseInt()方法是以后会介绍的,作用是取整。最后 default 段用的 if 语句,是为了不把 100 分当错误论(parseInt(100 / 10) == 10)。