JavaScript switch 语句

 JavaScript 语句和变量声明

switch语句是JavaScript的条件语句之一,用于在不同条件下执行不同的动作。

switch语句对表达式求值,将表达式的值与case子句匹配,并执行与该case关联的语句,以及在匹配case之后的语句。

与每个case标签关联的break语句可确保一旦执行了匹配的语句,程序便会退出switch,并在switch之后的语句处继续执行。如果省略break,程序将在switch语句的下一个语句处继续执行。

default语句指定如果没有匹配的情况下,默认运行的一些代码。switch中只能有一个默认语句。尽管这是可选的,但建议您使用它,因为它可以处理意料之外的情况。

使用switch选择要执行的许多代码块之一。这是长嵌套if ... else语句的完美解决方案。

语法:

switch (expression) {
  case value1:   //语句执行时
   //表达式匹配的结果 value1
   break;
  case value2:   //语句执行时
   //表达式匹配的结果 value2
   break;
  ...
  case valueN:   //语句执行时
   //表达式匹配的结果 valueN
   break;
  default:   //没有以上情况时执行的语句
   //这些值与表达式的值匹配
   }
var city = document.querySelector("input").value;
var text;

switch (city) {
   case "Jaipur":
   text = "Jaipur is known as the Pink City";
   break;
   case "Bengaluru":
   text = "Bengaluru is known as the IT city";
   break;
   case "Kerala": 
   text = "Kerala God's Own Country";
   break;
   default:
   text = "I have never heard of that city...";
}
测试看看‹/›

浏览器兼容性

所有浏览器都完全支持switch语句:

Statement
switch

参数值

参数描述
expression一个表达式,其结果与每个case子句匹配。
case valueN用于与表达式匹配的case子句。如果表达式匹配指定的valueN,则执行case子句中的语句,直到switch语句的结尾或break。
default(可选)默认子句;如果提供,则如果expression的值与任何case子句都不匹配,则执行此子句。

技术细节

JavaScript版本:ECMAScript 1

更多示例

使用工作日编号来计算工作日名称(星期日= 0,星期一= 1,依此类推...):

var day;
switch (new Date().getDay()) {
case 0: day = "Sunday";
break;
case 1: day = "Monday";
break;
case 2: day = "Tuesday";
break;
case 3: day = "Wednesday";
break;
case 4: day = "Thursday";
break;
case 5: day = "Friday";
break;
case 6: day = "Saturday";
break;
default: day = "Undefined Day";
}
测试看看‹/›

如果您忘记break,那么脚本将从符合条件的情况开始运行,然后在满足条件的情况下运行情况:

var num = Number(document.querySelector("input").value);
var text;

switch (num) {
   case 1: text = "您输入的号码是 1";
   case 2: text = "您输入的号码是 2";
   case 3: text = "您输入的号码是 3";
   case 4: text = "您输入的号码是 4";
   case 5: text = "您输入的号码是 5";
   default: text = "Default statement executed";
}
测试看看‹/›

有时,您会希望不同的情况使用相同的代码,或者使用通用代码。

这是单操作switch语句的示例,其中四个不同的值执行的操作完全相同:

var num = Number(document.querySelector("input").value);
var text;

switch (num) {
   case 1:
   case 2:
   case 3:
   case 4:
  text = "您输入的号码是介于 1 - 4";
  break;
   case 5:
   case 6:
   case 7:
   case 8:
  text = "您输入的号码是介于 5 - 8";
  break; 
   default: text = "默认语句被执行";
}
测试看看‹/›

相关参考

JavaScript教程:JavaScript If ... Else语句

JavaScript教程:JavaScript switch

JavaScript参考:JavaScript break语句

 JavaScript 语句和变量声明