JavaScript switch case

摘要:在本教程中,您将学习如何使用 JavaScript switch 语句根据多个条件执行代码块。

JavaScript switch case 语句简介

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

以下是 switch 语句的语法示例

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

工作原理。

  • 首先,评估 switch 关键字后的括号中的 表达式
  • 其次,将表达式的结果与 case 分支中的 value1value2 等进行比较,从上到下比较。switch 语句使用严格比较(===)。
  • 第三,执行 case 分支中的语句,其中 表达式 的结果等于 case 关键字后面的值。break 语句会退出 switch 语句。如果您省略 break 语句,则代码执行将从原始 case 分支继续到下一个分支。如果 表达式 的结果与任何值都不严格相等,则 switch 语句将执行 default 分支中的 语句

只要找到匹配项,switch 语句就会停止将 表达式 的结果与剩余的 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;
}
Code language: JavaScript (javascript)

JavaScript switch case 示例

让我们看一些使用 JavaScript switch 语句的示例。

1) 使用 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); // TuesdayCode language: JavaScript (javascript)

输出

Tuesday

工作原理。

首先,声明 day 变量,它包含天数,以及 dayName 变量。

其次,使用 switch 语句根据天数获取一周中的某一天。如果天数为 1,则一周中的某一天为 Sunday。如果天数为 2,则一周中的某一天为 Monday,依此类推。

第三,将一周中的某一天输出到控制台。

2) 使用 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); // 29Code language: JavaScript (javascript)

在此示例中,我们有四个情况

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

总结

  • switch 语句会评估一个表达式,将其结果与 case 值进行比较,并执行与匹配的 case 值关联的语句。
  • 使用 switch 语句而不是复杂的 if...else...if 语句,可以使代码更易读。
  • switch 语句使用严格比较(===)来比较 表达式case 值。
本教程对您有帮助吗?