Menu Close

JavaScript switch 语句

switch 语句可以替代多个 if 检查。

switch 语句评估一个 expression,将其结果与 case 值进行比较,并执行与匹配值关联的 case 语句。如果学习过C语言,很容易了解该语句。C语言的switch 语句和嵌套switch语句

下面说明了 switch 语句的语法:


让我们看看代码是如何运行的。

  • 首先,评估 switch 关键字后面括号内的 expression
  • 其次,将表达式的结果从上到下 与 case 分支中 value1,  value2, …进行比较。值得注意的是,switch 语句使用严格比较 ===
  • 第三,expression 执行结果等于 case 关键字后面的值时,执行 case 分支中的语句。break 表示语句退出 switch 语句。如果分支没有 break 语句,代码执行将进入下一个 case 分支。如果 expression 的结果不严格等于任何值,switch 声明将会执行 default 分支的语句。

只要找到匹配项,switch 语句就会停止将 expression 的结果与剩余 case后面的值进行比较。switch 语句类似于if…else…if语句。但它具有更易读的语法。

以下流程图说明 switch 语句执行流程:

JavaScript switch 语句
JavaScript switch 语句

在实践中,你经常使用一个 switch 语句来代替一个复杂的 if...else...if 语句来使代码更具可读性。

从技术上讲,switch 语句等同于以下  if...else...if 语句:

JavaScript switch 语句示例

让我们举一些使用 JavaScript switch 语句的例子。

这里,switch 从第一个 case 变体(即 3)开始比较 a。匹配失败。

接着是 4。匹配成功,因此执行从 case 4 开始,直到遇到最近的 break

如果没有 break,则执行会继续进入下一个 case,而不进行任何检查。

以下是一个没有 break 的例子:


在上面的例子中,我们将看到依次执行三个 alert

switch/case 后面参数可以使用任意表达式

switchcase 后面参数允许使用任意表达式。

例如:


这里 +a 的结果是 1,它会与 case 中的 b + 1 进行比较,然后执行对应的代码。

分组case

多个 case 如果要共享相同的代码,可以进行分组。

例如,如果我们希望 case 3case 5 执行相同的代码:

现在,3 和 5 都会显示相同的消息。

这种“分组” case 的能力是 switch/case 在没有 break 时执行机制的一个副作用。在这里,case 3 的执行从标记为 (*) 的那一行开始,并继续执行到 case 5,因为中间没有 break

数据类型很重要

需要强调的是,switch 中的相等比较始终是严格的。要匹配,值必须是相同的类型。

例如,来看下面的代码:


对于 0 和 1,会执行第一个 alert
对于 2,会执行第二个 alert
但对于 3,prompt 的结果是字符串 "3",它与数字 3 在严格相等(===)的比较中不相等。因此,case 3 是无效代码!将会执行 default 分支。

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!
Posted in JavaScript 基础