如何在JavaScript中使用Switch语句

介绍

条件语句是所有编程语言中最有用和最常见的特征之一。 如何在JavaScript中编写条件语句 ”描述了如何使用ifelseelse if关键字根据不同的条件控制程序的流程,JavaScript通常是用户输入的结果。

除了if...else ,JavaScript有一个称为switch语句的功能。 switch是一种条件语句,它将针对多种可能的情况评估表达式,并根据匹配情况执行一个或多个代码块。 switch语句与包含许多else if块的条件语句密切相关,它们通常可以互换使用。

在本教程中,我们将学习如何使用switch语句,以及如何使用相关的关键字casebreakdefault 最后,我们将介绍如何在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
}

遵循上面的代码块的逻辑,这是将发生的事件的顺序。

  • 表达式被评估
  • 第一种casex将根据表达式进行测试。 如果匹配,则代码将执行,而break关键字将结束switch块。
  • 如果不匹配,则将跳过x并根据表达式测试y情况。 如果y与表达式匹配,则代码将执行并退出switch块。
  • 如果没有匹配的情况, default代码块将运行。

让我们按照上面的语法制作一个switch语句的工作示例。 在此代码块中,我们将使用new Date()方法找到当天的当前new 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块中评估一系列值,而不是像上面的示例中的单个值。 我们可以通过将表达式设置为true并在每个case语句中执行操作来true

为了更容易理解,我们将使用一个熟悉的例子。 条件语句教程中,我们制作了一个简单的分级应用程序,该应用程序需要数字分数,并将其转换为字母级别,具有以下要求。

  • 90岁以上是A级
  • 80至89级为B级
  • 70至79级是C级
  • 60至69级是D级
  • 59岁以下是F级

现在我们可以把它写成一个switch语句。 由于我们正在检查一个范围,所以我们将在每种case执行操作,以检查每个表达式是否正在评估为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 ifswitch是从上到下进行评估,第一个真正的匹配将被接受。 因此,即使我们的grade变量为87 ,因此对于C和D也是如此,第一个匹配是B,这将是输出。

多案

您可能会遇到多个case应该具有相同输出的代码。 为了实现这一点,您可以为每个代码块使用多个case

为了测试这一点,我们将在适当的季节将与当前月份相匹配的小型应用程序。 首先,我们将使用new Date()方法来查找与当前月份对应的数字,并将其应用于month变量。

const month = new Date().getMonth();

new Date().getMonth()方法将从011输出一个数字, 0是1月和11是12月。 在本出版时,这个月是9月,这对应于8

为了简单起见,我们的应用将输出以下规格的四个季节:

  • 冬季 :1月,2月和3月
  • 春天 :四月,五月和六月
  • 夏季 :7月,8月和9月
  • 秋季 :十月,十一月,十二月

以下是我们的代码。

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.");
}

当我们运行代码时,我们将根据上述规格接收确定当前季节的输出。

OutputSummer

出版时的当前月份为8 ,符合"Summer"季节产出的case陈述之一。

结论

在本文中,我们回顾了switch语句,一种类型的条件语句 ,它根据匹配结果来计算表达式并输出不同的值。 我们使用范围和多个case语句审查了switch语句。

要了解有关switch更多信息,您可以在Mozilla开发人员网络上进行查看。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏