JavaScript Switch...Case 语句
在本教程中,您将学习如何使用 switch...case 语句来测试或评估 JavaScript 中具有不同值的表达式。
使用 Switch...Case 语句
switch..case 语句是 if...else if...else 语句的替代方案,它的作用几乎相同。 switch...case 语句根据一系列值测试变量或表达式,直到找到匹配项,然后执行与该匹配项对应的代码块。 它的语法是:
case value1:
// 如果 x === value1 时要执行的代码
break;
case value2:
// 如果 x === value2 时要执行的代码
break;
...
default:
// 如果 x 不同于所有值,则要执行的代码
}
考虑以下示例,它显示星期几的名称。
var d = new Date();
switch(d.getDay()) {
case 0:
alert("Today is Sunday.");
break;
case 1:
alert("Today is Monday.");
break;
case 2:
alert("Today is Tuesday.");
break;
case 3:
alert("Today is Wednesday.");
break;
case 4:
alert("Today is Thursday.");
break;
case 5:
alert("Today is Friday.");
break;
case 6:
alert("Today is Saturday.");
break;
default:
alert("No information available for that day.");
break;
}
getDay()
方法以从 0 到 6 的数字返回工作日,其中 0 表示星期日。 请参阅 JavaScript 日期和时间 章节以了解有关日期方法的更多信息。
注意: 在 switch...case 语句中,表达式或变量的值使用严格相等运算符(===
)。 这意味着如果 x = "0"
,它不匹配 case 0:
,因为它们的 数据类型 不相等。
switch...case 语句在一个重要方面不同于 if...else 语句。 switch 语句逐行执行(即逐个语句),一旦 JavaScript 找到一个计算结果为 true 的 case
子句,它不仅会执行该 case 子句对应的代码,还会执行所有后续 case
子句直到 switch
块自动结束。
为了防止这种情况,您必须在每个 case
之后包含一个 break
语句(如上例所示)。 break
语句告诉 JavaScript 解释器在执行与第一个 true 案例相关联的代码后跳出 switch...case 语句块。
但是,当 case
或 default
子句最后出现在 switch 语句中时,不需要 break
语句。 虽然,用 break
终止 switch 语句中的最后一个 case
或 default
子句是一种很好的编程习惯。 如果将另一个 case 语句添加到 switch 语句,它可以防止以后可能出现的编程错误。
default
子句是可选的,它指定在没有 case
与 switch 表达式匹配时要执行的操作。 default
子句不必是出现在 switch 语句中的最后一个子句。 这是一个示例,其中 default
不是最后一个子句。
var d = new Date();
switch(d.getDay()) {
default:
alert("Looking forward to the weekend.");
break;
case 6:
alert("Today is Saturday.");
break;
case 0:
alert("Today is Sunday.");
}
多个 case 共享相同的操作
每个 case 值在 switch 语句中必须是唯一的。 但是,不同的情况不需要有唯一的动作。 多个案例可以共享相同的操作,如下所示:
var d = new Date();
switch(d.getDay()) {
case 1:
case 2:
case 3:
case 4:
case 5:
alert("It is a weekday.");
break;
case 0:
case 6:
alert("It is a weekend day.");
break;
default:
alert("Enjoy every day of your life.");
}