在经历了if语句在多重嵌套下,显得非常凌乱,代码的可读性也非常差的遭遇之后,越来越多的人选择使用switch语句。switch语句之所以备受青睐,是因为switch使用更简洁的代码却能实现和使用语句if相同的功能只。只不过switch语句需要在多重判断下来执行,这就需要有一定的逻辑思维能力。因此,为了我们更好地理解和使用switch语句这就需要我们对switch语句结构解析。
我们首先来明确一下switch语句的适用场景:switch 语句用于基于不同条件执行不同动作。我们可以称为开关语句,当然理解上不要以为就只有开和关,可以想象它是一个多路开关。实际上,switch语句是一种多分支结构。我们来看一下它的语句结构:
switch (表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
┇
case 常量表达式n: 语句n
default: 语句n+1
}
switch后面的小括号是一个整型表达式,这与if不同。if条件表现的是相互对立的两种状态,而对于多分支结构的switch,是用多个整数值表现多种选择。if条件的对立性总是相对于0而言,所以只要某种数据类型的表达式能够表示0值,便可以充当if语句的条件,但是switch中的表达式的值需要对应到不同的处理入口,其相当于入口编号,所以限制以用整型数表示是明智的。
当switch后面括号内“表达式”的值与某个case后面的“常量表达式”的值相等时,就执行此case后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case继续执行。如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。正常我们都希望只执行一个符合条件的case语句,所以一般后面都会加上break,以便执行完成后,直接跳出switch语句。
下面我们用一个简单的例子来说明:
getDay() 方法返回 0 至 6 之间的周名数字(weekday number)。
(Sunday=0, Monday=1, Tuesday=2 ..)
使用周名数字来计算周的名称:
switch (new Date().getDay()) {
case 0:
day = "星期天";
break;
case 1:
day = "星期一";
break;
case 2:
day = "星期二";
break;
case 3:
day = "星期三";
break;
case 4:
day = "星期四";
break;
case 5:
day = "星期五";
break;
case 6:
day = "星期六";
}
“case常量表达式:”即处理入口(也称其为“标号”),常量表达式相当于入口编号,入口编号是不能重复的,所以每一个case的常量表达式的值必须互不相同。处理入口编号不能重复,但可以颠倒。也就是说,入口编号的顺序不重要。各个case(包括default)的出现次序可任意。在if语句中,if与else属下各自描述的语句是彼此独立的。但是在switch语句中,每个case只是标定处理入口,各个入口的语句并不排他。因此,switch语句中的全部处理入口描述的语句构成了一个顺序执行的动作序列。
上面的代码中出现的break是一个关键字,该关键字独立构成一条语句,其功能是在switch、for、while、do-while语句中,跳出结构而转向执行吓一条语句。或者说break语句强行终止上述语句的执行。对于if语句,其if-else结构中的语句块本身就是排他性的,所以没有必要用break去干预。
通过switch语句的实例分析,相信你对switch语句结构这个知识点有了很一定的理解,其实switch语句总体来说还是很简单易懂的,只要你稍稍学习,就能熟练掌握switch语句啦。当然,配上本站的专题讲解课程那就更有成效了。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19