3.3 循环控制语句

所谓循环语句,就是在满足条件的情况下可反复地执行某一个操作。循环控制语句主要包括while语句、do…while语句和for语句,下面分别进行讲解。

3.3.1 while语句

while语句可以实现循环操作。while循环语句也称为前测试循环语句,即利用一个先期条件来控制是否要重复执行循环体。while循环语句与for循环语句相比,无论是语法还是执行的流程,都较为简明易懂。while循环语句的语法格式如下:

    while(expression){
         statement
    }

参数说明:

expression:一个包含比较运算符的条件表达式,用来指定循环条件。

statement:用来指定循环体。在循环条件的结果为true时,重复执行该循环体。

说明

while循环语句之所以称为前测试循环,是因为它要先判断循环条件是否成立,然后进行重复执行的操作。也就是说,while循环语句执行的过程是先判断条件表达式,如果条件表达式的值为true,则执行循环体,并且在循环体执行完毕后,进入下一次循环,否则退出循环。

while循环语句的执行流程如图3.8所示。

说明

在使用while语句时,也一定要保证循环可以正常结束,即必须保证条件表达式的值存在false的情况,否则将形成死循环。例如,下面的循环语句就会造成死循环,原因是i永远都小于100。

图3.8 while循环语句的执行流程

while循环语句经常用于循环执行的次数不确定的情况下。

【例3.4】 通过while循环语句页面中列举累加和不大于10的所有自然数。(实例位置:资源包\TM\sl\3\04)

运行结果如图3.9所示。

图3.9 while循环累加和不大于10的自然数

3.3.2 do…while语句

do…while循环语句也称为后测试循环语句,它也是利用一个条件来控制是否要重复执行循环体。与while循环所不同的是,do…while先执行一次循环体,然后判断条件,确定是否继续执行。

do…while循环语句的语法格式如下:

    do{
          statement
    } while(expression);

参数说明:

statement:用来指定循环体。循环开始时,首先执行一次循环体,然后在循环条件的结果为true时,重复执行循环体。

expression:一个包含比较运算符的条件表达式,用来指定循环条件。

说明

do…while循环语句执行的过程是:先执行一次循环体,然后判断条件表达式,如果条件表达式的值为true,则继续执行循环体,否则退出循环。也就是说,do…while循环语句中的循环体至少要被执行一次。

do…while循环语句的执行流程如图3.10所示。

图3.10 do…while循环语句的执行流程

do…while循环语句同while循环语句类似,也常用于循环执行的次数不确定的情况下。

注意

do…while语句结尾处(即while语句括号后面)有一个分号“;”。为了养成良好的编程习惯,建议读者在书写的过程中不要将其遗漏。

3.3.3 for循环

for循环语句也称为计次循环语句,一般用于循环次数已知的情况下,在JavaScript中应用比较广泛。for循环语句的语法格式如下:

    for(initialize;test;increment){
           statement
    }

参数说明:

initialize:初始化语句,用来对循环变量进行初始化赋值。

test:循环条件,一个包含比较运算符的表达式,用来限定循环变量的边限。如果循环变量超过了该边限,则停止该循环语句的执行。

increment:用来指定循环变量的步幅。

statement:用来指定循环体,在循环条件的结果为true时,重复执行该循环体。

说明

for循环语句执行的过程是:先执行初始化语句,然后判断循环条件,如果循环条件的结果为true,则执行一次循环体,否则直接退出循环,最后执行迭代语句,改变循环变量的值,至此完成一次循环。接下来将进行下一次循环,直到循环条件的结果为false,才结束循环。

for循环语句的执行流程如图3.11所示。

图3.11 for循环语句的执行流程

为使读者更好地了解for语句的使用,下面通过一个具体的实例来介绍for语句的使用方法。

【例3.5】 计算100以内所有奇数的和。(实例位置:资源包\TM\sl\3\05)

运行程序,将会弹出提示框,显示运算结果,如图3.12所示。

图3.12 计算100以内奇数和

说明

在使用for语句时,一定要保证循环可以正常结束,也就是必须保证循环条件的结果存在false的情况,否则循环体将无休止地执行下去,从而形成死循环。例如,下面的循环语句就会造成死循环,原因是i永远大于等于1。

    for(i=1;i>=1;i++){
         alert(i);
    }