🌶️"switch" 语句
2025-7-3
| 2025-7-3
Words 865Read Time 3 min
type
status
date
slug
summary
tags
category
icon
password
上次编辑时间
Jul 3, 2025 09:47 AM
comment
AI 总结
switch 语句可以替代多个 if 判断。
switch 语句为多分支选择的情况提供了一个更具描述性的方式。

语法

switch 语句有至少一个 case 代码块和一个可选的 default 代码块。
就像这样:
  • 比较 x 值与第一个 case(也就是 value1)是否严格相等,然后比较第二个 casevalue2)以此类推。
  • 如果相等,switch 语句就执行相应 case 下的代码块,直到遇到最靠近的 break 语句(或者直到 switch 语句末尾)。
  • 如果没有符合的 case,则执行 default 代码块(如果 default 存在)。

举个例子

switch 的例子(高亮的部分是执行的 case 部分):
这里的 switch 从第一个 case 分支开始将 a 的值与 case 后的值进行比较,第一个 case 后的值为 3 匹配失败。
然后比较 4。匹配,所以从 case 4 开始执行直到遇到最近的 break
如果没有 break,程序将不经过任何检查就会继续执行下一个 case
无 break 的例子:
在上面的例子中我们会看到连续执行的三个 alert
任何表达式都可以成为 switch/case 的参数
switch 和 case 都允许任意表达式。
比如:
这里 +a 返回 1,这个值跟 case 中 b + 1 相比较,然后执行对应的代码。

“case” 分组

共享同一段代码的几个 case 分支可以被分为一组:
比如,如果我们想让 case 3 和 case 5 执行同样的代码:
现在 3 和 5 都显示相同的信息。
switch/case 有通过 case 进行“分组”的能力,其实是 switch 语句没有 break 时的副作用。因为没有 breakcase 3 会从 (*) 行执行到 case 5

类型很关键

强调一下,这里的相等是严格相等。被比较的值必须是相同的类型才能进行匹配。
比如,我们来看下面的代码:
  1. 在 prompt 对话框输入 01,第一个 alert 弹出。
  1. 输入 2,第二个 alert 弹出。
  1. 但是输入 3,因为 prompt 的结果是字符串类型的 "3",不严格相等 === 于数字类型的 3,所以 case 3 不会执行!因此 case 3 部分是一段无效代码。所以会执行 default 分支。
  • JavaScript
  • 函数循环:while 和 for
    Loading...