myfreax

JavaScript switch case

在本教程中,您将学习如何使用 JavaScript switch 语句根据多个条件执行分支语句

JavaScript switch case
JavaScript switch case

在本教程中,您将学习如何使用 JavaScript switch 语句根据多个条件执行分支语句。

JavaScript switch case 语句简介

switch 语句评估一个 expression,将其结果与 case 值进行比较,并执行与匹配值关联的 case 语句。

下面说明了 switch 语句的语法:

switch (expression) {
    case value1:
        statement1;
        break;
    case value2:
        statement2;
        break;
    case value3:
        statement3;
        break;
    default:
        statement;
}

让我们看看代码是如何运行的。

  • 首先,评估 switch 关键字后面括号内的 expression
  • 其次,将表达式的结果从上到下 与 case 分支中 value1,  value2, …进行比较。值得注意的是,switch 语句使用严格比较 ===
  • 第三,expression 执行结果等于 case 关键字后面的值时,执行 case 分支中的语句。break 表示语句退出 switch 语句。如果分支没有 break 语句,代码执行将进入下一个 case 分支。如果 expression 的结果不严格等于任何值,switch 声明将会执行 default 分支的语句。

只要找到匹配项,switch 语句就会停止将 expression 的结果与剩余 case后面的值进行比较。switch 语句类似于if...else...if语句。但它具有更易读的语法。

以下流程图说明 switch 语句执行流程:

javascript switch

在实践中,你经常使用一个 switch 语句来代替一个复杂的 if...else...if 语句来使代码更具可读性。

从技术上讲,switch 语句等同于以下  if...else...if 语句:

if (expression === value1) {
  statement1;
} else if (expression === value2) {
  statement2;
} else if (expression === value3) {
  statement3;
} else {
  statement;
}

JavaScript switch 示例

让我们举一些使用 JavaScript switch 语句的例子。

JavaScript switch 语句获取星期几

以下示例使用 switch 语句根据天数获取星期几:

let day = 3;
let dayName;

switch (day) {
  case 1:
    dayName = 'Sunday';
    break;
  case 2:
    dayName = 'Monday';
    break;
  case 3:
    dayName = 'Tuesday';
    break;
  case 4:
    dayName = 'Wednesday';
    break;
  case 5:
    dayName = 'Thursday';
    break;
  case 6:
    dayName = 'Friday';
    break;
  case 7:
    dayName = 'Saturday';
    break;
  default:
    dayName = 'Invalid day';
}

console.log(dayName); // Tuesday

输出:

Tuesday

看看代码是如何运行。

首先,声明保存日期编号的日期变量和日期名称变量 (dayName)。

其次,使用 switch 语句根据天数获取星期几。如果 day 是 1,则该日是周末的Sunday。如果天是 2,则是Monday,依此类推。

第三,将星期几打印到控制台。

JavaScript switch 语句获取基于月份的天数

以下示例使用switch语句获取一个月的天数:

let year = 2016;
let month = 2;
let dayCount;

switch (month) {
  case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12:
    dayCount = 31;
    break;
  case 4:
  case 6:
  case 9:
  case 11:
    dayCount = 30;
    break;
  case 2:
    // leap year
    if ((year % 4 == 0 && !(year % 100 == 0)) || year % 400 == 0) {
      dayCount = 29;
    } else {
      dayCount = 28;
    }
    break;
  default:
    dayCount = -1; // invalid month
}

console.log(dayCount); // 29

在这个例子中,我们有四种情况:

  • 如果月份是 1、3、5、7、8、10 或 12,则一个月的天数是 31。
  • 如果月份为 4、6、9 或 11,则该月的天数为 30。
  • 如果月份为2,年份不是闰年,则天数为 28。如果年份为闰年,则天数为 29。
  • 如果月份不在有效范围(1-12)内,则 default 分支被执行并将 dayCount 变量设置为-1,表示无效月份。

结论

  • switch 语句计算一个表达式,将其结果与 case 值进行比较,并执行与匹配关联语句。
  • 使用 switch 语句而不是复杂的 if...else...if 语句使代码更可阅读。
  • switch 语句使用严格比较 ===expressioncase 值进行比较。

内容导航