个性化阅读
专注于IT技术分析

JS switch…case分支语句 – JavaScript教程

上一章JavaScript教程请查看:if…else条件语句

在本教程中,你将学习如何使用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语句中,使用严格的相等运算符(===)将表达式或变量的值与case值进行比较。这意味着如果x = “0”,它不匹配大小写0:,因为它们的数据类型不相等。

switch…case语句不同于if…else,witch语句逐行执行(即,一个语句接着一个语句),一旦JavaScript发现一个case子句的计算结果为true,它不仅执行与case子句对应的代码,而且还自动执行所有后续的case子句,直到switch块的末尾。

为了防止这种情况,你必须在每种情况之后包含一个break语句(正如你在上面的示例中看到的那样)。break语句告诉JavaScript解释器断开执行,一旦case语句执行了与第一个true case相关联的代码,它就会被阻塞。

但是,当case或default子句最后出现在switch语句中时,它并不需要break语句。尽管如此,终止最后一种情况(或switch语句中的default子句)是一种很好的编程实践。如果在switch语句中添加另一个case语句,则可以防止以后可能出现的编程错误。

default子句是可选的,它指定在大小写不匹配switch表达式时要执行的操作。default子句不一定是出现在switch语句中的最后一个子句。这里有一个例子,其中default不是最后一个子句。

var d = new Date();

switch(d.getDay()) {
    default: 
        alert("期待周末.");
        break;
    case 6:
        alert("Today is Saturday.");
        break; 
    case 0:
        alert("Today is Sunday.");
}

多个case共享相同的操作

每个case值在switch语句中必须是唯一的。但是,不同的情况不需要有唯一的动作。几个case可以共享相同的动作,如下图所示:

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.");
}
赞(0)
未经允许不得转载:srcmini » JS switch…case分支语句 – JavaScript教程

评论 抢沙发

评论前必须登录!