🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 【知识精讲】多路顺序结构 ## Part1 在学习了分支结构的 `if... else...` 及其使用之后,让我们学习一种新的语句——多路判定语句。它的最常见形式如下: ~~~ switch (a) { case 1: [代码块1]; case 2: [代码块2]; case 3: [代码块3]; } ~~~ 这里的 `a` 是一个表达式,`switch` 会用这个表达式的值与 自上而下的每一个 `case` 后的值进行比对。如果表达式值与某个 `case` 后的值相等,这个 `case` 之后的所有代码块会依次被执行。 ## Part2 [![11_switch 0.png](https://res.jisuanke.com/img/upload/20160807/df41660cd2e5e0eeae31f285e0dfa1fefc9c6e32.png)](https://res.jisuanke.com/img/upload/20160807/df41660cd2e5e0eeae31f285e0dfa1fefc9c6e32.png) 对于这样的情况,如果 `a` 取值为 `1`,那么 \[代码块1\]、\[代码块2\]、 \[代码块3\]…… 会被依次执行。而如果 `a` 取值为 `3`,那么 \[代码块3\]…… 会被依次执行。 ## Part3 可能你会好奇,如果 `a` 的取值与任何一个 `case` 中的值都不相等会发生什么。正常情况下,什么都不会发生。如果我们希望在所有 `case` 都不满足的时候,有某些语句可以被执行。我们可以在所有的 `case` 后加上 `default`。形成如下的一种情况。 [![11_switch 1.png](https://res.jisuanke.com/img/upload/20160807/699ae2aa828bb4b8d4986a21057664872e2ebed6.png)](https://res.jisuanke.com/img/upload/20160807/699ae2aa828bb4b8d4986a21057664872e2ebed6.png) ## Part4 如果我们希望某一个语句块被执行后,不再继续顺序执行接下来的语句块,而是跳出 `switch` 结构,我们可以在相应的语句块后使用 `break;`。 [![11_switch 2.png](https://res.jisuanke.com/img/upload/20160807/1e6576b0f10e8bd2eb356d8bc32e2c89e22f2681.png)](https://res.jisuanke.com/img/upload/20160807/1e6576b0f10e8bd2eb356d8bc32e2c89e22f2681.png) 例如,对于上面这样一个结构,如果第一个 `case` 的值与 `a` 的取值相同,\[代码块1\] 会被执行,但是由于 `break` 的影响,之后的语句块将不会被执行。 ## Part5 如果我们在每一个 `case` 之后的语句块执行后,都加上 `break;`,`switch` 这种顺序结构将向下面这幅图一样,在某种程度上扮演起分支的作用。 [![11_switch 3.png](https://res.jisuanke.com/img/upload/20160807/a86de0e00b727d9d68113745b59a51e363fdd683.png)](https://res.jisuanke.com/img/upload/20160807/a86de0e00b727d9d68113745b59a51e363fdd683.png)