处理多个条件分支取决于相同的表达式,并且条件分支的数量在 3 个以上,就要考虑使用 switch 语句了。
下面是 switch 语句的基本语法:
switch ([表达式]) {
case [预估值1]:
[分支语句]
break;
case [预估值2]:
[分支语句]
break;
case [预估值3]:
[分支语句]
break;
...
case [预估值 n]:
[分支语句]
break;
default:
[分支语句]
break;
}
在这里,[表达式]
通常是一个变量,但也可以是其他任何能提供返回值的成分。[预估值1]
到[预估值n]
则都是程序员预测[表达式]
可能会返回的值。
在该语句被执行时,程序会拿这些预估值去一一比对[表达式]
返回的实际值,如果存在匹配的预估值,就执行该值之后的所有语句。
请注意,这里说的所有语句是指匹配预估值后面所有分支的语句。如果我们只想执行它当前所在分支的[分支语句]
,就必须在该[分支语句]
后面加上一个 break 跳转语句,跳出 switch 语句的执行。
如果程序没有找到任何匹配的预估值,就会执行由关键字 default 标记的分支。和 if 语句中的 else 分支一样,这里的 default 分支也是可选的。
如果程序员觉得没有必要,也可以不设置这一分支。在这种情况下,如果程序没有找到匹配的预估值,switch 语句就什么也会不做。
说得更具体一点,整个 switch 语句的执行步骤可细分为以下几步:
- 对 switch 语句的
[表达式]
进行求值,并记录结果。 - 进入第一个 case 分支,将预估值与步骤 1 的结果进行比对。
- 如果步骤 2 中的比对结果为 true,则执行该 case 分支后面的“所有代码”。
- 在相关 case 分支中的语句执行完成之后,如果遇到 break 语句就直接退出 switch 语句。
- 如果步骤 2 中的比对结果为 false,就进入下一个 case 分支中,重复步骤 2~5 中的操作。
- 如果直到最后一个 case 分支的比对结果依然为 false,就执行 default 分支后面的代码。
- 如果 default 分支不存在,就直接退出 switch 语句。
下面,我们通过一个具体的例子来演示一下 switch 语句的用法。
switch 这个单词的其中一个含义是交换机,这就让人联想到了拨打电话的原理。接下来,我们就用 switch 语句来模拟一个只能给 4 个人打电话的电话交换机:
let number = 1002;
switch (number) {
case 1001:
console.log('张三');
break;
case 1002:
console.log('李四');
break;
case 1003:
console.log('王五');
break;
case 1004:
console.log('赵六');
break;
default:
console.log('你拨打的是空号!');
break;
}
执行上述代码然后查看当 number 的值分别为 1001、1002、1003、1004 和其他任意数字时的执行结果。
number 的值为 1002 和 1005 时的结果如图所示。
![图片[1]|JS switch语句用法详解](https://www.91yiqixue.com/wp-content/uploads/2022/03/15-22021QK619561.gif)
除此之外,也可以将其中任意一个或几个 break 语句注释掉,看看程序的执行结果与之前有何不同。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧