条件语句是所有编程语言中最有用和最常见的功能之一。如何在 JavaScript 中编写条件语句描述了如何使用if
, else
, and else if
关键字根据不同的条件控制程序的流程,在 JavaScript 中通常是用户输入的结果。
此外if...else
, JavaScript 有一个称为switch
陈述。switch
是一种条件语句,它将针对多种可能的情况评估表达式,并根据匹配的情况执行一个或多个代码块。这switch
语句与包含许多内容的条件语句密切相关else if
块,并且它们通常可以互换使用。
在本教程中,我们将学习如何使用switch
声明,以及如何使用相关关键字case
, break
, and default
。最后,我们将介绍如何在一个应用程序中使用多个案例switch
陈述。
The switch
语句计算表达式并执行代码作为匹配案例的结果。基本语法类似于if
陈述。它总是会写成switch () {}
,其中括号包含要测试的表达式,大括号包含要执行的潜在代码。
下面是一个示例switch
声明有两个case
声明和后备称为default
.
switch (expression) {
case x:
// execute case x code block
break;
case y:
// execute case y code block
break;
default:
// execute default code block
}
按照上面代码块的逻辑,将发生的事件顺序如下:
- 表达式被求值。
- 首先
case
, x
,将针对表达式进行测试。如果匹配,则代码将执行,并且break
关键字将结束switch
block.
- 如果不匹配,
x
将被跳过并且y
case 将根据表达式进行测试。如果y
匹配表达式,代码将执行并退出switch
block.
- 如果没有任何情况匹配,则
default
代码块将运行。
让我们做一个工作示例switch
遵循上述语法的语句。在此代码块中,我们将使用以下命令查找当前星期几new Date()
方法,以及getDay()
打印对应于当天的数字。0
代表周日,一直到6
代表星期六。我们将从设置变量开始。
const day = new Date().getDay();
Using switch
,我们将在一周中的每一天向控制台发送一条消息。该程序将按照从上到下的顺序运行,寻找匹配项,一旦找到匹配项,break
命令将停止switch
阻止继续评估语句。
week.js
// Set the current day of the week to a variable, with 0 being Sunday and 6 being Saturday
const day = new Date().getDay();
switch (day) {
case 0:
console.log("It's Sunday, time to relax!");
break;
case 1:
console.log("Happy Monday!");
break;
case 2:
console.log("It's Tuesday. You got this!");
break;
case 3:
console.log("Hump day already!");
break;
case 4:
console.log("Just one more day 'til the weekend!");
break;
case 5:
console.log("Happy Friday!");
break;
case 6:
console.log("Have a wonderful Saturday!");
break;
default:
console.log("Something went horribly wrong...");
}
Output
'Just one more day 'til the weekend!'
这段代码是在周四测试的,对应的是4
,因此控制台输出是Just one more day 'til the weekend!
。根据您在一周中的哪一天测试代码,您的输出将会有所不同。我们已经包括了default
阻止在最后运行,以防出现错误,在这种情况下,这种情况不应该发生,因为一周只有 7 天。例如,我们也可以只打印周一到周五的结果,并且default
布洛克可能会在周末传达同样的信息。
如果我们省略了break
每个语句中都包含关键字,其他语句中都没有关键字case
语句将被评估为 true,但程序将继续检查直到到达末尾。为了使我们的程序更快、更高效,我们包括break
.
有时您可能需要评估一个值的范围switch
块,而不是上面示例中的单个值。我们可以通过将表达式设置为来做到这一点true
并在每个内进行操作case
陈述。
为了使这一点更容易理解,我们将使用一个熟悉的示例。在里面条件语句在教程中,我们制作了一个评分应用程序,它将获取数字分数并将其转换为字母分数,并满足以下要求。
- 90级及以上为A
- 80到89的等级是B
- 70 至 79 级是C
- 60 至 69 级是D
- 59级或以下为F
现在我们可以把它写成switch
陈述。由于我们正在检查一个范围,因此我们将在每个范围内执行操作case
检查每个表达式的计算结果是否为true
一旦满足要求,就中断该语句true
已经很满意了。
成绩.js
// Set the student's grade
const grade = 87;
switch (true) {
// If score is 90 or greater
case grade >= 90:
console.log("A");
break;
// If score is 80 or greater
case grade >= 80:
console.log("B");
break;
// If score is 70 or greater
case grade >= 70:
console.log("C");
break;
// If score is 60 or greater
case grade >= 60:
console.log("D");
break;
// Anything 59 or below is failing
default:
console.log("F");
}
Output
'B'
要计算的括号中的表达式是true
在这个例子中。这意味着任何case
其评估结果为true
将是一场比赛。
就像与else if
, switch
从上到下进行评估,第一个真正匹配的将被接受。因此,即使我们的grade
变量是87
因此评估为true
对于 C 和 D,第一个匹配项是 B,这将是输出。
您可能会遇到多种情况应具有相同输出的代码。为了实现这一点,您可以使用多个case
对于每个代码块。
为了测试这一点,我们将制作一个小应用程序,将当前月份与适当的季节相匹配。首先,我们将使用new Date()
方法查找与当前月份相对应的数字,并将其应用于month
多变的。
const month = new Date().getMonth();
The new Date().getMonth()
方法将输出一个数字0
to 11
, with 0
一月和11
是十二月。在本出版物发布时,月份是 9 月,对应于8
.
为了简单起见,我们的应用程序将输出四个季节,并具有以下规格:
-
Winter: 一月、二月和三月
-
Spring:四月、五月和六月
-
Summer: 七月、八月和九月
-
Autumn: 十月、十一月和十二月
下面是我们的代码。
季节.js
// Get number corresponding to the current month, with 0 being January and 11 being December
const month = new Date().getMonth();
switch (month) {
// January, February, March
case 0:
case 1:
case 2:
console.log("Winter");
break;
// April, May, June
case 3:
case 4:
case 5:
console.log("Spring");
break;
// July, August, September
case 6:
case 7:
case 8:
console.log("Summer");
break;
// October, November, December
case 9:
case 10:
case 11:
console.log("Autumn");
break;
default:
console.log("Something went wrong.");
}
当我们运行代码时,我们将收到根据上述规范识别当前季节的输出。
Output
Summer
发布时的当前月份是8
,对应于其中之一case
声明与"Summer"
季节产量。
在这篇文章中,我们回顾了switch
声明,一种类型条件语句它评估表达式并根据匹配结果输出不同的值。我们回顾了switch
使用范围和多个的语句case
声明。
要了解更多信息switch
,您可以在Mozilla 开发者网络.