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 语句块。

但是,当 casedefault 子句最后出现在 switch 语句中时,不需要 break 语句。 虽然,用 break 终止 switch 语句中的最后一个 casedefault 子句是一种很好的编程习惯。 如果将另一个 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