Switch是与if ... else ...相同的条件语句,不同之处在于switch语句允许根据值列表测试变量是否相等。
使用switch从要执行的许多代码块中选择一个。这是一个完美的解决方案,嵌套if…else语句。
一条switch语句如下所示:
switch (expression) {
case value1:
//语句执行
//表达式的结果与value1匹配
break;
case value2:
//语句执行
//表达式的结果与value2匹配
break;
...
case valueN:
//语句执行
//表达式的结果与value N匹配
break;
default:
//当以上任何一项都不执行时
//执行这里的代码块
}
按照上面代码块的逻辑,这是将要发生的事件的顺序:
-
switch表达式一次求值
-
将表达式的值与每种情况的值进行比较
-
如果匹配,则执行相关的代码块
-
如果所有情况都不匹配,则执行默认代码块
以下示例使用工作日编号来计算星期几:
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 关键字
break与每个case标签相关联的关键字可确保一旦执行了匹配的语句,程序便会退出切换,并在切换后的语句处继续执行。如果省略break,程序将在switch语句的下一个语句处继续执行。
如果您忘记休息,那么脚本将从符合条件的情况开始运行,然后在满足条件的情况下运行情况:
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 = "执行默认语句";
}
没有必要中断switch块中的最后一种(即default)情况。因为语句块最终在这里中断(结束)。
default 关键字
如果没有case匹配,则default关键字指定要运行的一些代码。
switch中只能有一个默认语句。尽管这是可选的,但建议您使用它,因为它可以处理预料之外的情况。
多种情况
有时,您会希望不同的情况使用相同的代码,或者使用通用代码。
这是一个操作顺序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 = "执行默认语句";
}
如果多个case与值匹配,则选择第一个case。
如果找不到匹配的case,程序将继续使用默认标签。
如果未找到默认标签,则程序将继续执行切换后的语句。