介绍
条件语句是所有编程语言中最有用和最常见的特征之一。 “ 如何在JavaScript中编写条件语句 ”描述了如何使用if
, else
和else if
关键字根据不同的条件控制程序的流程,JavaScript通常是用户输入的结果。
除了if...else
,JavaScript有一个称为switch
语句的功能。 switch
是一种条件语句,它将针对多种可能的情况评估表达式,并根据匹配情况执行一个或多个代码块。 switch
语句与包含许多else if
块的条件语句密切相关,它们通常可以互换使用。
在本教程中,我们将学习如何使用switch
语句,以及如何使用相关的关键字case
, break
和default
。 最后,我们将介绍如何在switch
语句中使用多个案例。
开关
switch
语句将计算一个表达式,并作为匹配大小写的结果执行代码。 起初它可以看起来有点吓人,但基本的语法类似于if
语句。 它将始终用switch () {}
编写,括号包含要测试的表达式,并且括号包含要执行的潜在代码。
下面是一个带有两种case
语句的switch
语句的case
,也称为default
的fallback。
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
块。 - 如果不匹配,则将跳过
x
并根据表达式测试y
情况。 如果y
与表达式匹配,则代码将执行并退出switch
块。 - 如果没有匹配的情况,
default
代码块将运行。
让我们按照上面的语法制作一个switch
语句的工作示例。 在此代码块中,我们将使用new Date()
方法找到当天的当前new Date()
,并且将getDay()
打印出与当前日期相对应的数字。 1
代表星期一,一直通过7
代表星期天。 我们首先设置我们的变量。
const day = new Date().getDay();
使用switch
,我们将在一周的每一天向控制台发送消息。 程序将按顺序从上到下依次查找匹配项,一旦找到,则break
命令将停止switch
块继续评估语句。
// Set the current day of the week to a variable, with 1 being Monday and 7 being Sunday
const day = new Date().getDay();
switch (day) {
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;
case 7:
console.log("It's Sunday, time to relax!");
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
语句中执行操作来true
。
为了更容易理解,我们将使用一个熟悉的例子。 在条件语句教程中,我们制作了一个简单的分级应用程序,该应用程序需要数字分数,并将其转换为字母级别,具有以下要求。
- 90岁以上是A级
- 80至89级为B级
- 70至79级是C级
- 60至69级是D级
- 59岁以下是F级
现在我们可以把它写成一个switch
语句。 由于我们正在检查一个范围,所以我们将在每种case
执行操作,以检查每个表达式是否正在评估为true
然后一旦满足true
的要求,就会抛出该语句。
// 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
。 这意味着任何评估为true
都将是匹配。
就像else if
, switch
是从上到下进行评估,第一个真正的匹配将被接受。 因此,即使我们的grade
变量为87
,因此对于C和D也是如此,第一个匹配是B,这将是输出。
多案
您可能会遇到多个case
应该具有相同输出的代码。 为了实现这一点,您可以为每个代码块使用多个case
。
为了测试这一点,我们将在适当的季节将与当前月份相匹配的小型应用程序。 首先,我们将使用new Date()
方法来查找与当前月份对应的数字,并将其应用于month
变量。
const month = new Date().getMonth();
new Date().getMonth()
方法将从0
到11
输出一个数字, 0
是1月和11
是12月。 在本出版时,这个月是9月,这对应于8
。
为了简单起见,我们的应用将输出以下规格的四个季节:
- 冬季 :1月,2月和3月
- 春天 :四月,五月和六月
- 夏季 :7月,8月和9月
- 秋季 :十月,十一月,十二月
以下是我们的代码。
// 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.");
}
当我们运行代码时,我们将根据上述规格接收确定当前季节的输出。
OutputSummer
出版时的当前月份为8
,符合"Summer"
季节产出的case
陈述之一。
结论
在本文中,我们回顾了switch
语句,一种类型的条件语句 ,它根据匹配结果来计算表达式并输出不同的值。 我们使用范围和多个case
语句审查了switch
语句。
要了解有关switch
更多信息,您可以在Mozilla开发人员网络上进行查看。