共计 971 个字符,预计需要花费 3 分钟才能阅读完成。
switch 语句评估一个表达式,将表达式的值与 case 子句匹配,并执行与该情况相关联的语句。
语法节
switch (expression) {
case value1:
// 当 expression 的结果与 value1 匹配时,执行此处语句
[break;]
case value2:
// 当 expression 的结果与 value2 匹配时,执行此处语句
[break;]
...
case valueN:
// 当 expression 的结果与 valueN 匹配时,执行此处语句
[break;]
[default:
// 如果 expression 与上面的 value 值都不匹配时,执行此处语句
[break;]]
}
expression
一个用来与 case 子语句匹配的表达式。
case valueN 可选
用于匹配 expression 的 case 子句。如果 expression 与给定的 valueN 相匹配,则执行该 case 子句中的语句直到该 switch 语句结束或遇到一个 break。
default 可选
一个 default 子句;如果给定,这条子句会在 expression 的值与任一 case 语句均不匹配时执行。
描述节
一个 switch 语句首先会计算其 expression。然后,它将从第一个 case 子句开始直到寻找到一个其表达式值与所输入的 expression 的值所相等的子句(使用 严格运算符,===)并将控制权转给该子句,执行相关语句。(如果多个 case 与提供的值匹配,则选择匹配的第一个 case,即使这些 case 彼此间并不相等。)如果没有 case 子句相匹配,程序则会寻找那个可选的 default 子句,如果找到了,将控制权交给它,执行相关语句。若没有 default 子句,程序将继续执行直到 switch 结束。按照惯例,default 子句是最后一个子句,不过也不需要这样做。
可选的 break 语句确保程序立即从相关的 case 子句中跳出 switch 并接着执行 switch 之后的语句。若 break 被省略,程序会继续执行 switch 语句中的下一条语句。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/switch
说一千道一万,
其实还是从上到下依次跟每一个 case 比较,如果匹配上就执行,并且依次执行,除非遇到 break