JavaScript程序设计:基础·PHP·XML
上QQ阅读APP看书,第一时间看更新

3.6.3 switch语句

为了更容易编写多路选择结构,JavaScript提供了一条明确为这个目的而设计的switch语句。这条语句包含一个单一测试表达式,以判断要执行哪一块代码。典型的switch语句看起来如下所示:

switch语句这样工作:先对测试表达式求值,然后将它的值与第一个case比较,如果匹配,就执行第一块语句,然后退出这个结构,其中break关键字强迫程序跳到这个结束花括号后面的代码行。如果在第一个case中不匹配,那么就将测试表达式的值与第二个case进行比较,如果这里匹配就执行第二块语句,然后退出这个结构。这个过程继续直到发现测试表达式值的一个匹配或者直到所有的case结束。程序员可以写一条默认语句(即如果测试表达式不匹配任何case时要做的事情)或者不做任何动作。在默认情形或所有case结束之后,这个语句结构退出。

switch语句适合于许多情形,如经常用来创建菜单。在一个有许多选项的程序中,它提供的代码比使用许多if...else语句更简洁。事实上,使用它能够更容易编写例3.10创建的评价网站程序,本节后面将重做这个例子。

以下例子展示当测试条件是一串文本、单个字符或一个数字时如何使用switch语句。例3.13使用switch语句让用户改变网页的背景颜色。

例3.13 使用switch语句处理页面颜色

这个程序提示用户录入一种颜色,并将这个值存储在变量color中。然后color用于switch语句中每个case的测试表达式。当找到一个匹配时,就执行相应的语句从而改变网页的背景颜色,而且break语句导致程序执行跳到第25行。可以看到,与使用if...else if语句相比,读这个代码是多么容易。此外,如果你想要包括其他颜色,那么为这个语句增加更多的选项也是非常容易的。

当为用户给出一个选择菜单时,经常会使用switch语句。例如,用户可能在以下选项中挑选一项:再玩游戏、恢复游戏、退出游戏、选择新游戏等。或者,如例3.14所示,用户可能选择执行几类计算中的一种。以下程序使用switch语句让用户得到某个已选形状的面积。

例3.14 使用switch语句得到一个形状的面积

注意,在每个case选项中可以有与你想要的一样多的语句。

在JavaScript中,switch语句的每个case一次只能测试一件事情。换句话说,if子句能够测试比5大的任何数字(即,if(x>5)),而switch语句必须分开测试每个比5大的数字。然而,有很多方法处理这种问题。例3.15展示的程序使用switch语句替换例3.10展示的if...else if语句。

例3.15 使用switch语句评价一个网页

通过简单地除去在case 9:和case 8:语句之后的break语句,使得当用户录入8或9时程序将自动执行下一条可执行语句(即case 7:语句)并且执行这个case中的语句,直到第20行的break语句。如果用户录入5或6,将发生同样的事情,要执行的下一条语句是在第24和25行,并且结束于第26行的break语句。如果用户录入3或2,那么将出现类似的情形。

当面对需要多个判断的情形时,可以选择是否使用switch、if...else或者if...else if结构,评估哪一种结构能够提供最清楚、最简单的解决方案。有时候,这个选择只是个人偏爱而已。但是,通过学习所有可用的技术,你将成为一个更好的程序员。

3.6节检查点

3.24 假定你要为教授编写程序,将为学生给出的字母成绩重新转换为数字成绩,转换规则是:A=95,B=85,C=75,D=65,F=50。你会为这个程序使用哪一类判断结构?

3.25 使用if...else if结构编写检查点3.24描述的程序。

3.26 使用switch语句重新编写检查点3.24描述的程序。

3.27 为例3.13创建的程序添加代码,让用户录入几种其他颜色,包括红色、黑色和你要的任何其他颜色。

3.28 为在检查点3.27创建的程序添加代码,让用户改变网页的文本颜色。