JAVASCRIPT 基础教程
JAVASCRIPT & DOM
JAVASCRIPT & BOM
JAVASCRIPT 高级教程
JAVASCRIPT 示例
JAVASCRIPT 参考

JavaScript Switch...Case 语句

在本教程中,您将学习如何使用 switch...case 语句来测试或评估 JavaScript 中具有不同值的表达式。

使用 Switch...Case 语句

switch..case 语句是 if...else if...else 语句的替代方案,它的作用几乎相同。 switch...case 语句根据一系列值测试变量或表达式,直到找到匹配项,然后执行与该匹配项对应的代码块。 它的语法是:

switch(x){
    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.");
}
Advertisements