- JavaScript从入门到精通(第3版)
- 明日科技
- 1498字
- 2021-03-26 09:55:30
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); }