JavaScript编程精解(原书第3版)
上QQ阅读APP看书,第一时间看更新

2.10 while和do循环

考虑一个程序,输出从0到12的所有偶数。编写此程序的一种方法如下:

这行得通,但编写程序的目的是让一些工作更少,而不是更多。如果我们需要输出所有小于1000的数字,这种方法将行不通。我们需要的是一种多次运行一段代码的方法。这种形式的控制流称为循环(loop)。

循环控制流允许我们回到程序的某个点,然后用我们当前的程序状态重复它。如果我们将其与计数的绑定相结合,我们可以执行类似操作:

以关键字while开头的语句创建一个循环。在while后面跟的是括号中的表达式,然后是语句,就像if一样。只要表达式生成的值转换为布尔值时为true,循环就继续进入此语句。

number绑定演示了绑定跟踪程序进度的方式。每次循环重复时,数字number都会得到一个比其以前的值多2的值。每次重复的开始,它都与数字12进行比较,以决定程序的工作是否完成。

作为实际执行一些有用功能的示例,我们现在可以编写一个计算并显示210(2的10次方)值的程序。我们使用两个绑定:一个用于跟踪结果,另一个用于计算我们用2乘以此结果的次数。循环测试第二个绑定是否已达到10,如果还没有达到,则同时更新两个绑定。

计数器也可以从1开始并检查<= 10,但最好习惯从0开始计数,我们将在第4章中说明这么做的原因。

do循环是类似于while循环的控制结构。它只在一点上不同:do循环始终至少执行其循环体一次,并且仅在第一次执行后开始测试是否应该停止。为了反映这一点,测试出现在循环的循环体之后。

此程序将强制你输入名称。它会反复询问,直到它得到不是空字符串的东西为止。应用!运算符将在取反某个值之前先将此值转换为布尔类型,除""之外的所有字符串都将转换为true。这意味着循环继续下去,直到你提供一个非空名称为止。