前言
switch 语句用于基于不同的条件来执行不同的动作。
switch 语句
使用 switch 语句来选择多个代码块的其中一个来执行, switch 语句的每个 case 称为一个分支。
语法:
switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n与 case 1 和 case 2 都不相等时执行的代码 }
执行逻辑:程序从上往下执行,当遇到 switch 语句时,先计算表达式 n (通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配(相等),则与该 case 关联的代码块会被执行。
使用 break 来阻止代码自动地向下一个 case 运行(匹配成功时,程序默认会依次下面每个 case 后的代码块,包括最后的 defuat 代码块,这叫 switch 的 贯穿特性)。
代码实例:
//判断今天是星期几。 //需要的注意是,数字和真实星期的对应关系: //Sunday=0 //Monday=1 //Tuesday=2 //...... var d=new Date().getDay(); //此句代码会获取星期对应的数字 switch (d) { case 0 : x="今天是星期日"; break; case 1 : x="今天是星期一"; break; case 2 : x="今天是星期二"; break; case 3 : x="今天是星期三"; break; case 4 : x="今天是星期四"; break; case 5 : x="今天是星期五"; break; case 6 : x="今天是星期六"; break; } console.log(x);
每个 case 分支后可以不写代码( js 是允许的)。
break
使用 break 来阻止代码自动地向下一个 case 运行。
break 只可以用在 switch 和循环语句(后面会提到)中。
在实际应用中,在每个 case 分支最后添加 break 语句是一个好习惯;但有时候我们可能会故意不写 break 来达到特殊的业务需求;
//判断今天是不是工作日。 //需要的注意是,数字和真实星期的对应关系: //Sunday=0 //Monday=1 //Tuesday=2 //...... var d=new Date().getDay(); //此句代码会获取星期对应的数字 switch (d) { case 1 : case 2 : case 3 : case 4 : case 5 : x="今天是工作日"; break; case 0 : case 6 : x="今天是非工作日(周末)"; break; } console.log(x);
default
使用 default 关键词来规定匹配不成功时做的事情:
//如果今天不是星期六或星期日,则会输出默认的消息: var d=new Date().getDay(); switch (d) { case 6 : x="今天是星期六" ; break; case 0 : x="今天是星期日" ; break; default : x="期待周末"; }
实际应用中, default 分支可以省略
实际应用中, default 分支可以被放置在任何一个 case 分支前、后,而且也不会影响程序的执行逻辑。