登录 注册

<   js如何使用 switch语句

2025-09-10

在 JavaScript 中,switch 语句是一种强大的控制流程语句,它允许你根据一个表达式的值,在多个预设的“情况”中选择执行哪一段代码。这通常比使用一系列 if...else if...else 语句更简洁、更易读。

switch 语句的基本语法

javascript
switch (expression) {
case value1:
// 当 expression 的值等于 value1 时执行的代码块
break; // 可选,用于跳出 switch 语句

case value2:
// 当 expression 的值等于 value2 时执行的代码块
break;

// ... 更多 case

default:
// 当 expression 的值不匹配任何 case 时执行的代码块 (可选)
}


组成部分解析:

1. switch (expression):
* switch: 关键字,表示开始一个 switch 语句。
* (expression): 这是一个表达式,它的值将被用来与 case 后面的值进行比较。这个表达式可以是变量、函数调用、算术表达式等。

2. case value::
* case: 关键字,表示一个可能的“情况”。
* value: 这是与 expression 的值进行比较的目标值。case 后面的值可以是数字、字符串、布尔值等。
* :: 冒号是必需的,用于分隔 case 值和其对应的代码块。

3. 代码块:
* 在每个 case 后面,你可以放置任意数量的 JavaScript 语句。当 expression 的值与某个 casevalue 全等(===) 时,这些语句将被执行。

4. break;:
* break: 关键字。这是一个非常重要的关键字。
* 它的作用是跳出当前的 switch 语句。如果没有 break 语句,当一个 case 匹配成功后,程序会继续执行下一个 case 的代码块,直到遇到 break 或者 switch 语句结束。这被称为“穿透”(fall-through)。
* 通常情况下,每个 case 都应该以 break 语句结束,除非你有意想要“穿透”到下一个 case

5. default::
* default: 关键字。这是一个可选的“情况”。
* :: 冒号是必需的。
* 当 expression 的值不匹配任何一个 casevalue 时,default 后面的代码块将被执行。
* default 语句通常放在 switch 语句的最后,但并非强制要求。如果 default 之后还有 case 语句,并且 default 后面没有 break,那么程序会继续执行后面的 case

switch 语句的工作流程:

1. JavaScript 引擎计算 switch 语句中的 expression 的值。
2. 引擎将计算出的值与每个 case 后面的 value 进行全等比较(===)
3. 如果找到匹配的 case
* 执行该 case 及其后续的所有语句,直到遇到 break 语句(或 switch 语句结束)。
4. 如果没有找到匹配的 case
* 如果存在 default 语句,则执行 default 语句及其后续的所有语句,直到遇到 break 语句(或 switch 语句结束)。
* 如果没有 default 语句,则 switch 语句不执行任何代码。

使用 switch 语句的示例:

示例 1:根据用户输入的星期几显示不同信息

javascript
let dayOfWeek = 3; // 假设今天是星期三
let dayName;

switch (dayOfWeek) {
case 0:
dayName = "星期日";
break;
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
case 3:
dayName = "星期三";
break;
case 4:
dayName = "星期四";
break;
case 5:
dayName = "星期五";
break;
case 6:
dayName = "星期六";
break;
default:
dayName = "无效的星期几";
}

console.log("今天是:" + dayName); // 输出:今天是:星期三


示例 2:处理不同的字符串输入

javascript
let command = "start";
let message;

switch (command) {
case "start":
message = "服务已启动。";
break;
case "stop":
message = "服务已停止。";
break;
case "restart":
message = "服务正在重启。";
break;
default:
message = "未知命令。";
}

console.log(message); // 输出:服务已启动。


示例 3:利用“穿透”(Fall-through)

这是一个需要谨慎使用的特性,通常是为了简化代码,当多个 case 需要执行相同的代码逻辑时。

javascript
let score = 75;
let grade;

switch (true) { // 这里用 true 作为 expression,然后 case 判断布尔值
case (score >= 90):
grade = "A";
break;
case (score >= 80):
grade = "B";
break;
case (score >= 70):
grade = "C";
break;
case (score >= 60):
grade = "D";
break;
default:
grade = "F";
}
console.log("你的分数是:" + score + ", 等级是:" + grade); // 输出:你的分数是:75, 等级是:C

// 另一种利用穿透的例子:
let fruit = "apple";
let color;

switch (fruit) {
case "apple":
case "pear":
color = "green or red";
break;
case "orange":
case "banana":
color = "yellow";
break;
default:
color = "unknown";
}
console.log(fruit + " 的颜色是:" + color); // 输出:apple 的颜色是:green or red

在这个例子中,如果 fruit 是 “apple” 或 “pear”,它们都会匹配到第一个 case,因为它们后面都没有 break,所以会“穿透”到 color = "green or red"; 这一行,然后执行 break

switch 语句的优点:

* 可读性强: 对于有许多可能的固定值需要匹配的场景,switch 比嵌套的 if...else if...else 更容易阅读和理解。
* 性能: 在某些 JavaScript 引擎实现中,switch 语句的查找速度可能比一连串的 if...else if 语句更快,因为它可能使用表格查找等优化方式。
* 简洁: 避免了重复的条件判断。

switch 语句的缺点/注意事项:

* 只能进行全等比较: switch 语句只能进行严格相等(===)的比较。它不能处理范围比较(例如 x > 5)或非全等比较。
* break 的重要性: 忘记 break 是最常见的错误,会导致意外的“穿透”行为。
* default 的可选性: 如果没有 default,且没有 case 匹配,switch 语句将不执行任何操作。

何时使用 switch 语句?

* 当你有一个变量或表达式,需要根据它的固定值来执行不同的代码块时。
* 当你有三个或更多需要比较的条件,并且这些条件都是基于同一个变量的相等性检查时。
* 当你想要避免深度嵌套的 if...else if...else 结构时。

总结:

switch 语句是 JavaScript 中一个非常有用的工具,它提供了一种清晰、高效的方式来处理多分支条件。理解 casebreakdefault 的作用是正确使用它的关键。

AI问答 发表 上传 拍照
BBSGOOD.COM ©2025  运行时间: