介绍
条件语句是任何编程语言中最重要控制流之一。我们使用它们来根据某些条件决定执行的行为。在 Javascript 中,条件块可以使用 if, else if, else 和 switch 语句来构建。
The switch 语句通过针对表达式的一些可能结果做出决策,使控制流易于阅读。根据匹配的使用场景,可以执行一个或多个代码块。 switch 控制类似于 else if 语句。然而, switch 在语法上更具可读性。它也非常适合具有多种可能结果的场景。
在本教程中,我们将重点关注 switch 语句在 Javascript 中的应用,并实现它来构建复杂的控制结构。我们还将学习如何使用 break , case、 default 语句在 switch 块中来引导控制流.
使用 Switch 语句
The switch 语句的工作原理是将变量的值与可能的表达式进行比较。然后,它执行与结果匹配的代码块。 switch 语句的语法与 if 语句没有什么不同。简而言之,switch 语句的语法写为:
|
1 2 |
switch() { } |
下面是一个 switch 语句的示例。它有两个 case 或两个可能的结果,以及一个由 default 关键字指定的备用选项。当执行结束或未找到匹配的 case 时,将执行此备用选项:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case x: // 当表达式匹配 case x 时执行此代码块 break; case y: // 当表达式匹配 case y 时执行此代码块 break; default: // 默认块 } |
上述代码的执行过程如下:
-
首先,对表达式进行求值。
-
接下来,将表达式的结果与 case x 进行匹配。如果值匹配,则执行 case x 下的代码块。
-
如果表达式与 case x 不匹配,则匹配 case y。如果找到匹配项,则执行 case y 代码。
-
最后,如果 case x 和 case y 都不匹配,则执行 default 代码,并且控制流移出 switch 块。
工作示例
为了理解 switch 语句,让我们来看一个工作示例。我们将通过使用 getDay() 方法,该方法属于 Javascript 的 Date 对象,来提取当前日期的星期几数值。该值是一个数字, 代表星期日,一直到 6 代表星期六。我们将针对这些值进行求值,以确定它是星期几:
|
1 |
const day = new Date().getDay(); |
接下来,我们将把这个值传递给 switch 语句。 switch 语句将从上到下运行,将其与各个 case 进行匹配,以确定它是星期几。一旦找到匹配的 case, break 命令将停止 switch 块继续执行求值语句:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// 将当前星期几设置为一个变量,其中 0 代表星期日,6 代表星期六 const day = new Date().getDay(); switch (day) { case 0: console.log("今天是星期日"); break; case 1: console.log("今天是星期一!"); break; case 2: console.log("今天是星期二。"); break; case 3: console.log("已经是星期三了!"); break; case 4: console.log("今天是星期四"); break; case 5: console.log("周五快乐!"); break; case 6: console.log("今天是星期六!"); break; default: console.log("没有匹配的项") } |
根据从 getDate() 方法返回的值,它将从上到下逐个与 case 进行匹配测试。输出结果会根据你运行代码的日期而有所不同。设置 default 代码块是为了在没有匹配到任何 case 时处理这种情况。然而,在这段代码中,default 永远不会被调用,因为一周的天数是有限的。
The break 语句确保一旦匹配到 case,就不会再匹配其他 case,并且控制权会跳出 switch 语句。这使得程序更高效、更快速。
在 Switch 中测试范围
到目前为止,我们一直在看非常简单的用例。但有时可能需要测试一个范围的值,而不是单个值。我们可以通过将表达式设置为 true 并在每个 case 语句中执行操作来实现这一点。
让我们通过一个例子来演示这个用例。我们将获取一个数字,然后使用以下分类将其转换为成绩:
-
90分及以上为 A
-
80到89分为 B
-
70到79分为 C
-
60到69分为 D
-
59分及以下为 F
我们将这些语句写为 switch 语句。以下是对应的代码:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// 学生成绩 const grade = 87; switch (true) { // 如果分数大于或等于 90 case grade >= 90: console.log("A"); break; // 如果分数大于或等于 80 case grade >= 80: console.log("B"); break; // 如果分数大于或等于 70 case grade >= 70: console.log("C"); break; // 如果分数大于或等于 60 case grade >= 60: console.log("D"); break; // 任何 59 分及以下的分数均为不及格 default: console.log("F"); } |
与上述代码示例不同,这里我们将括号中的表达式设置为 true。因此,无论哪个 case 语句与 true 值匹配,它都将被执行。就像 else if语句一样,第一个与指定值匹配的语句将被执行。这里的输出将是B,尽管事实上即使C和D也符合该表达式。
多个 Case
如果您希望多个 case 共享同一个代码块,这也是可以实现的。这类似于 或条件,在 if语句中。在这种情况下,我们可以为每个代码块指定多个 case。
为了说明这一概念,我们将提供一个关于一年中月份的示例。我们将这些月份分类为一年中的季节。首先,我们将使用新的 Date()方法来获取当前月份对应的数字,并将其赋给 month 变量。 Date().getMonth()方法返回一个介于 0 到 11之间的数字,其中 0代表一月,11 代表十二月。
我们将使用以下规范进行分类:
-
冬季:一月、二月和三月
-
春季:四月、五月和六月
-
夏季:七月、八月和九月
-
秋季:十月、十一月和十二月
代码如下所示:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
const month = new Date().getMonth(); switch (month) { // 一月、二月、三月 case 0: case 1: case 2: console.log("Winter"); break; // 四月、五月、六月 case 3: case 4: case 5: console.log("Spring"); break; // 七月、八月、九月 case 6: case 7: case 8: console.log("Summer"); break; // 十月、十一月、十二月 case 9: case 10: case 11: console.log("Autumn"); break; default: console.log("Something went wrong."); } |
执行上述代码时,控制台将根据月份输出相应的季节名称。
结论
在本教程中,我们演示了如何在 JavaScript 应用程序中使用 switch语句。我们还演示了如何将 switch语句应用于范围和多个 case,以及 default 关键字。如果您想了解更多关于 JavaScript 的信息,可以查看以下教程:
祝您编程愉快!
评论
暂无评论。发表第一条评论吧。