除了if ... else之外,JavaScript还有一个称为switch语句的功能。 switch是一种条件语句,它将针对多种可能的情况评估表达式,并根据匹配的情况执行一个或多个代码块。 switch语句与包含许多其他if块的条件语句密切相关,并且它们通常可以互换使用。
在本教程中,我们将学习如何使用switch语句,以及如何使用相关的关键字case,break和default。 最后,我们将介绍如何在switch语句中使用多个case。
Switch
switch语句计算表达式并作为匹配大小写的结果执行代码。 起初它看起来有点令人生畏,但基本语法类似于if语句。 它将始终使用switch(){}编写,括号中包含要测试的表达式,以及包含要执行的潜在代码的花括号。
下面是一个带有两个case语句的switch语句和一个称为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块。
如果它不匹配,x将跳过,y并将针对表达式测试案例。如果y匹配表达式,代码将执行并退出switch块。
如果所有情况都不匹配,则default代码块将运行。
让我们按照上面的语法制作一个switch语句的工作示例。 在此代码块中,我们将使用新的Date()方法找到一周中的当前日期,并使用getDay()来打印与当天相对应的数字。 1代表星期一,一直代表7代表星期日。 我们将从设置变量开始。
const day = new Date().getDay();
使用switch,我们将在一周中的每一天向控制台发送消息。程序将按从上到下的顺序运行以查找匹配项,一旦找到一个,该break命令将停止该switch块继续评估语句。
week.js
// 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 Ranges
在某种情况下,您需要评估switch块中的一系列值,而不是像上面示例中的单个值。 我们可以通过将表达式设置为true并在每个case语句中执行操作来完成此操作。
为了使这更容易理解,我们制作了一个简单的评分应用程序,它将获得一个数字分数并将其转换为字母等级,具有以下要求。
等级90及以上是A
等级80到89是B
等级70到79是C
等级60到69是D
等级59或以下是F.
现在我们可以将其写为switch语句。 由于我们正在检查范围,因此我们将在每种情况下执行操作以检查每个表达式是否正在评估为true,然后在满足true要求后突破语句。
grades.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。 这意味着任何评估为true的情况都是匹配的。
就像使用else一样,switch从上到下进行评估,并接受第一个真正的匹配。 因此,即使我们的等级变量为87,因此对于C和D也评估为真,第一个匹配是B,它将是输出。
Multiple Cases
您可能会遇到多个case应具有相同输出的代码。 为了实现这一点,您可以为每个代码块使用多个case。
为了测试这个,我们将制作一个小的应用程序,将当前月份与适当的季节相匹配。 首先,我们将使用新的Date()方法查找与当前月份对应的数字,并将其应用于月份变量。
为简单起见,我们的应用程序将输出具有以下规格的四季:
冬季:一月,二月和三月
春天:四月,五月和六月
夏季:七月,八月和九月
秋天:十月,十一月和十二月
以下是我们的代码。
seasons.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陈述相对应。
结论:
在本文中,我们回顾了switch语句,这是一种条件语句,用于评估表达式并根据匹配结果输出不同的值。 我们使用范围和多个case语句检查了switch语句。
最近我正在跟我的团队伙伴讨论如何去处理这种需要根据不同的值去处理不同的情况的方法,通常对于这种情况下,人们喜欢使用switch语句或者使用很多if搭配else if条件。在本文中我将重点介绍第三种方式(我更为喜欢的方法),即使用对象进行快速地查找。
在JavaScript里面,一般我们想让程序在function里面执行到一半时,经过判断或者完成某种操作后停止执行后面的代码,会用return结束掉function。可以在while中间加入多个if()break作为断点,控制逻辑的流程。
相信我们程序员平时写代码用的最多的逻辑就是if语句了吧,可你知道他的原理是什么吗,其实这跟Boolean()这个方法有关,此方法为自动执行(在需要判定Boolean的语句中中自动执行)
前一阵子猛然想到一个问题,JS有分号自动补全(ASI)机制,在写JS时我是习惯性在语句后面加上分号,在块语句后面不加分号。那么如果没有加分号的话,在什么情况下会出现问题?在JS语句后到底是应该加分号还是不加分号?
在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式。对象字面量是一种灵活方便的书写方式,例如:new表达式是配合构造函数使用的:
在 HTML 中,JavaScript 语句是由 web 浏览器执行的指令。JavaScript 语句可以用花括号({...})组合在代码块中。JavaScript 语句常常通过某个关键词来标识需要执行的 JavaScript 动作。
简单逻辑常用判断,if..else if...else... 中的条件体应该总是按照从最大概率到最小概率排列,以保证理论速度最快,switch/case 条件数量较大的话,就建议选用
JavaScript return 语句,表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。
表达式是由运算符构成,并运算产生结果的语法结构。一个表达式会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数。
没有 switch 就没有复杂的代码块,switch很方便:给定一个表达式,我们可以检查它是否与一堆case子句中的其他表达式匹配。 考虑以下示例:
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!