Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择;常和case、break、default一起使用。
switch语句可以用于基于不同的条件来执行不同的动作。
switch语句是一个条件选择语句,找到相同的case值做为执行后面的程序入口;若所有的case都不满足,则找default入口;若未找到default入口则退出整个switch语句。
语法格式:switch (变量表达式)
{ case常量1: 语句;break; case常量2: 语句;break; case常量3: 语句;break; ... case常量n: 语句;break; default: 语句;break; }
代码解释:计算一次 switch 表达式
把表达式的值与每个 case 的值进行对比
如果存在匹配,则执行关联代码
如果case 的值不匹配,则执行default下的关联代码
说明:
case 后的常量指的是常量表达式,它必须是整数类型。在一个特定的 switch 语句中,每个 case 常量都必须具有独一无二的值,不可以重复。但是 switch 语句可以包含多个 case 标签。
default 标签是可选的,可以放在 switch 语句体内任何位置。如果没有 default 标签,并且没有任何 case 常量符合 switch 语句控制表达式的计算结果,那么 switch 语句体中的语句都不会执行。在这种情况下,程序流会转而执行 switch 语句体后面的语句。
switch 语句体通常是一个从 case 标签开始的语句块。如果在第一个 case 标签之前有语句,这些语句并不会被执行。
示例:
varday; switch (newDate().getDay()) { case0: day="周日"; break; case1: day="周一"; break; case2: day="周二"; break; case3: day="周三"; break; case4: day="周四"; break; case5: day="周五"; break; case6: day="周六"; }
document.getElementById("demo").innerHTML = "今天是" + day;
输出:今天是周二
switch语句用法注意事项
1、不要忘记在 case 语句的结尾添加 break 语句
在 switch 语句中,每个 case 语句的结尾不要忘记添加 break 语句,否则将导致多个分支重叠。当然,除非有意使多个分支重叠,这样可以免去 break 语句。
2、不要忘记在 switch 语句的结尾添加 default 语句
在 switch 语句中,default 语句主要用于检查默认情况,或者处理错误情况
如果在 switch 语句中去掉 default 语句,那么 switch 语句将失去对默认情况与错误情况的处理能力。所以,奉劝大家不要偷懒,老老实实把每一种情况都用 case 语句来完成,而把真正对默认情况的处理交给 default 语句来完成。即使程序真的不需要 default 处理,也应该保留此语句:default:
break;
这样做并非画蛇添足,可以避免令人误以为你忘记了 default 处理。
3、不要为了使用 case 语句而刻意构造一个变量
在实际编程应用中,switch 中的 case 语句应该只用于处理简单的、容易分类的数据。如果数据并不简单,却为了使用 case 语句而刻意构造一个变量,那么这种变量很容易令我们得不偿失。因此应该严格避免这种变量,并使用 if/else 结构来处理这类程序
4、尽量将长的 switch 语句转换为嵌套的 switch 语句
有时候,当一个 switch 语句中包括很多个 case 语句时,为了减少比较的次数,可以把这类长 switch 语句转为嵌套 switch 语句,即把发生频率高的 case 语句放在一个 switch 语句中,作为嵌套 switch 语句的最外层;把发生频率相对低的 case 语句放在另一个 switch 语句中,放置于嵌套 switch 语句的内层。