对于一些需要反复执行并且有规律的代码,可以采用循环结构进行编写。循环结构能够使代码结构更加清晰,有效减少重复代码。循环结构包含for、while、do…while 3种形式。
当循环次数固定时,一般采用for循环结构。for循环结构的语法格式为:
初始化表达式只在第一次循环开始前执行一次。结束条件表达式在每次循环开始前计算一次值,如果值为true,则继续循环并执行代码块,否则终止循环。迭代表达式在每次循环后执行一次。
【例2-12】求100和1000之间的自然数之和
例2-12在Chrome浏览器控制台中的运行结果为:
495550
for循环语句还可以结合条件语句实现更加复杂的功能。我国古代数学家张丘建先生在《算经》中提出了用“一百铜钱购买一百只鸡”的经典算术问题。如果手工计算,庞大的计算量无异于愚公移山,而通过循环结构编写程序,计算机成功执行立即得到结果。因此,我们要学会利用先进的手段解决问题,提高创新能力,用所学知识去解决现实中的问题。
【例2-13】一百铜钱购买一百只鸡
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
例2-13在Chrome浏览器控制台中的输出结果如图2-9所示。
图2-9 例2-13的输出结果
while循环根据循环条件的真假决定是否执行循环体,语法格式为:
while循环在每次循环前先判断循环条件,如果条件为真,则执行代码块,否则跳出循环。
【例2-14】“合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下”。一张厚度为0.1毫米的足够大的纸,对折多少次以后才能达到珠穆朗玛峰的高度(8844.43米)?
例2-14在Chrome浏览器控制台中的运行结果为:
27
do…while循环是while循环的变种。在do…while循环中,无论循环条件是否为真,都会至少执行一次代码块。do…while循环的语法格式为:
【例2-15】猜数字游戏
在例2-15中,变量random代表用户要猜的一个数字,值为8。变量num保存用户输入的值,循环条件为“num != random”。在循环体中,首先弹出输入框获取用户输入值,然后判断输入值num和random的关系,如果相等则循环结束,输入框消失。在输入框中依次输入2、9和8,例2-15在Chrome浏览器控制台中的运行结果如图2-10所示。
图2-10 例2-15的运行结果
while和do…while的区别是:while循环首先判断循环条件是否成立,条件不满足不执行循环体;do…while循环先执行循环体,再判断循环条件是否成立,即使条件不成立,也执行了一次循环体。示例如下:
运行结果:
无输出
运行结果:
10
在上述示例的左、右两个代码块中,n的初值相同,循环条件和循环体也相同,但结果不同。
提示: for循环适合循环次数是已知的操作。while和do…while循环适合循环次数是未知的操作。
只要循环条件成立,循环语句便会一直执行下去。如果希望在循环过程中跳出循环,可以使用循环跳出语句。JavaScript循环跳出语句包括break和continue两种。
break语句可以直接跳出for、while和do…while循环。当有多层循环嵌套时,break语句只能跳出离得最近的一层循环。
【例2-16】判断给定数字是否为素数
上面示例在Chrome浏览器控制台中显示的运行结果为:
该数字不是素数
在例2-16中,只要发现一个大于1且可以整除该数字的自然数,即可证明该数字不是素数,程序也没必要继续执行下去,所以用break语句直接跳出for循环。
continue语句只能跳出本次循环,并继续进入下一次循环。
【例2-17】输出10以内的奇数
例2-17在Chrome浏览器控制台中的运行结果为: