系列
JavaScript教程
switch
2018-02-24大约6分钟
使用if
和else if
语句可以检查多个条件,如果第一个条件false
,则检查第二个,如果仍未false
,则继续检查下一个,依此类推。当要判断某个变量与许多可能的值时,仍用if和else if会使代码变得比较臃肿,这时有一个更高效的替代方案,就是switch
语句。
switch语句
先来看一段示例代码:红灯停,绿灯行,黄灯亮了等一等
const lightColor = "red";
switch (lightColor) { // ()里面检查变量表达式的值
case "green": // 检查可能的值,如果匹配,则执行下面的代码,知道遇到break为止
console.log("可以通行");
break;
case "yellow": // 上面不匹配,执行第二个case
console.log("等等");
break;
case "red": // 上面不匹配,执行第三个case
console.log("禁止通行");
break;
default: // 找到匹配,且执行了break语句,则不再执行后面代码
console.log("未知交通灯颜色,暂停使用");
break;
}
switch
语句就是“将代码切换到条件匹配的分支处”。switch
语句有4个重要的元素:
- 测试表达式
case
语句break
语句default
语句
测试表达式放在switch
关键字后面的()
中,不只可以放变量,也可以放任意有效的表达式。
接下来是case
语句,case
语句检查条件。为了说明case
语句属于switch
语句,必须把它们放到测试表达式后的{}
中。
break
语句表示执行到此之后应该跳出switch
语句,不应该再执行switch
语句后面的代码。
最后是default
语句。顾名思义,它表示其他的case
语句都不匹配时要执行的代码。default
语句不是必须的,没有默认要执行的代码的时候,就可以不用default
语句。一般情况下,最好包含一个default
语句,防止遗漏可能的选项,把这种意料之外的信息打印出来,可以帮助万一程序出错时做错误分析。
一定不要忘记在每个case语句块的最后加上break语句,除非是故意这么做的。
不同的case执行相同的代码
有时候,相同的case
的执行的代码是一样的,这种情况下可以这样写代码,请留意注释部分:
const color = "green";
switch (color) {
case "green":
case "blue":
case "purple":
console.log("冷色系颜色"); // green、blue和purple共用一个case代码
case "red":
case "orange":
case "yellow":
console.log("暖色系颜色"); // 其他的颜色也共用一个case代码
}
代码执行什么结果?

傻瓜作者,代码有错误你看不出来啊?
不好意思,犯了一个初学者很容易忽略的错误,上面代码少了break
!,马上修改,同时也完善一个default
:
const color = "green";
switch (color) {
case "green":
case "blue":
case "purple":
console.log("冷色系颜色"); // green、blue和purple共用一个case代码
break;
case "red":
case "orange":
case "yellow":
console.log("暖色系颜色"); // 其他的颜色也共用一个case代码
break;
default:
console.log("我不懂你说的颜色是什么系的");
}
可以试试修改代码中color变量的值,然后重新运行看结果。