微信登录

控制语句 - switch 语句 - 穿透现象及避免方法

前端 - Javascript 《控制语句 - switch 语句 - 穿透现象及避免方法》

在前端开发中,JavaScript 是一门至关重要的编程语言,而控制语句则是 JavaScript 中实现程序逻辑的基础。其中,switch 语句是一种常用的条件判断语句,它能根据不同的条件执行不同的代码块。不过,switch 语句有一个特别的现象——穿透现象,下面我们就来详细了解一下。

什么是 switch 语句

switch 语句是一种多分支选择语句,它根据一个表达式的值,在一系列的选项中进行匹配,然后执行相应的代码块。其基本语法如下:

  1. switch (expression) {
  2. case value1:
  3. // 当 expression 的值等于 value1 时执行的代码
  4. break;
  5. case value2:
  6. // 当 expression 的值等于 value2 时执行的代码
  7. break;
  8. default:
  9. // 当 expression 的值与所有 case 都不匹配时执行的代码
  10. }

穿透现象

穿透现象是 switch 语句的一个特性,当 switch 语句中某个 case 分支的代码块没有 break 语句时,程序会继续执行下一个 case 分支的代码,直到遇到 break 语句或者 switch 语句结束。下面是一个简单的例子:

  1. let day = 2;
  2. switch (day) {
  3. case 1:
  4. console.log("星期一");
  5. case 2:
  6. console.log("星期二");
  7. case 3:
  8. console.log("星期三");
  9. case 4:
  10. console.log("星期四");
  11. case 5:
  12. console.log("星期五");
  13. case 6:
  14. console.log("星期六");
  15. case 7:
  16. console.log("星期日");
  17. default:
  18. console.log("输入无效");
  19. }

在这个例子中,day 的值为 2,程序会从 case 2 开始执行,输出 “星期二”。由于 case 2 后面没有 break 语句,程序会继续执行 case 3case 4 等分支的代码,最终输出结果为:

  1. 星期二
  2. 星期三
  3. 星期四
  4. 星期五
  5. 星期六
  6. 星期日

穿透现象的使用场景

虽然穿透现象可能会导致一些意外的结果,但在某些情况下,它也能发挥作用。比如,当多个 case 分支需要执行相同的代码时,可以利用穿透现象来简化代码。例如,判断一个月份属于哪个季节:

  1. let month = 3;
  2. switch (month) {
  3. case 12:
  4. case 1:
  5. case 2:
  6. console.log("冬季");
  7. break;
  8. case 3:
  9. case 4:
  10. case 5:
  11. console.log("春季");
  12. break;
  13. case 6:
  14. case 7:
  15. case 8:
  16. console.log("夏季");
  17. break;
  18. case 9:
  19. case 10:
  20. case 11:
  21. console.log("秋季");
  22. break;
  23. default:
  24. console.log("输入无效");
  25. }

在这个例子中,利用穿透现象,我们可以将属于同一个季节的月份合并在一起,减少代码的重复。

避免穿透现象的方法

为了避免穿透现象带来的意外结果,我们可以在每个 case 分支的代码块末尾添加 break 语句。break 语句的作用是跳出 switch 语句,终止后续 case 分支的执行。修改前面的例子:

  1. let day = 2;
  2. switch (day) {
  3. case 1:
  4. console.log("星期一");
  5. break;
  6. case 2:
  7. console.log("星期二");
  8. break;
  9. case 3:
  10. console.log("星期三");
  11. break;
  12. case 4:
  13. console.log("星期四");
  14. break;
  15. case 5:
  16. console.log("星期五");
  17. break;
  18. case 6:
  19. console.log("星期六");
  20. break;
  21. case 7:
  22. console.log("星期日");
  23. break;
  24. default:
  25. console.log("输入无效");
  26. }

这样,当 day 的值为 2 时,程序只会输出 “星期二”。

总结

情况 描述 示例
穿透现象 case 分支没有 break 时,程序会继续执行下一个 case 分支 见前面 day 的例子
穿透现象的使用 多个 case 分支需要执行相同代码时,可利用穿透简化代码 季节判断的例子
避免穿透 在每个 case 分支末尾添加 break 语句 修改后的 day 例子

通过了解 switch 语句的穿透现象及避免方法,我们可以更加灵活地运用 switch 语句来实现程序逻辑,避免因穿透现象导致的错误。在实际开发中,要根据具体需求决定是否利用穿透现象,同时要养成在 case 分支末尾添加 break 语句的好习惯。

控制语句 - switch 语句 - 穿透现象及避免方法