JS switch case语句详解
JavaScript switch case 语句的语法格式如下:
switch (表达式){
case value1:
statements1 // 当表达式的结果等于 value1 时,则执行该代码
break;
case value2:
statements2 // 当表达式的结果等于 value2 时,则执行该代码
break;
......
case valueN:
statementsN // 当表达式的结果等于 valueN 时,则执行该代码
break;
default :
statements // 如果没有与表达式相同的值,则执行该代码
}
switch 语句根据表达式的值,依次与 case 子句中的值进行比较:
如果两者相等,则执行其后的语句段,当遇到 break 关键字时则跳出整个 switch 语句。
如果不相等,则继续匹配下一个 case。
switch 语句包含一个可选的 default 关键字,如果在前面的 case 中没有找到相等的条件,则执行 default 后面的语句段。
注意:switch 语句中,表达式是使用全等(===)来与各个 cese 子句中的值进行匹配的。由于使用的是全等运算符,因此不会自动转换每个值的类型。
switch 语句的执行流程(工作原理)如下图所示:
图:switch case 语句执行流程
break 关键字
switch 语句是逐行执行的,当 switch 语句找到一个与之匹配的 case 子句时,不仅会执行该子句对应的代码,还会继续向后执行,直 switch 语句结束。为了防止这种情况产生,需要在每个 case 子句的末尾使用 break 来跳出 switch 语句。break 除了可以用来跳出 switch 语句外,还可以用来跳出循环语句(for、for in、while、do while 等),后面我们会详细介绍。
【示例1】下面示例使用 switch case 语句设计网站登录会员管理模块。
var id = 1;
switch (id) {
case 1 :
console.log("普通会员");
break; //停止执行,跳出switch
case 2 :
console.log("VIP会员");
break; //停止执行,跳出switch
case 3 :
console.log("管理员");
break; //停止执行,跳出switch
default : //上述条件都不满足时,默认执行的代码
console.log("游客");
}
case 子句
case 子句可以省略语句,这样当匹配时,不管下一个 case 条件是否满足,都会继续执行下一个 case 子句的语句。【示例2】下面示例演示了把普通会员和 VIP 会员并在一起进行检测。
var id = 1;
switch (id) {
case 1 :
case 2 :
console.log("VIP会员");
break;
case 3 :
console.log("管理员");
break;
default :
console.log("游客");
在 switch 语句中,case 子句只是指明了执行起点,但是没有指明执行的终点,如果在 case 子句中没有 break 语句,就会发生连续执行的情况,从而忽略后面 case 子句的条件限制,这样就容易破坏 switch 结构的逻辑。
如果在函数中使用 switch 语句,可以使用 return 语句终止 switch 语句,防止代码继续执行。
default语句
default 是 switch 子句,可以位于 switch 内任意位置,不会影响其它 case 子句的正常执行。下面结示例介绍使用 default 语句应该注意 3 个问题。【示例3】如果 default 下面还有 case 子句,应该在 default 后面添加 break 语句,终止 switch 结构,防止程序突破 case 条件的限制继续执行下面 case 子句。
var id = 1;
switch (id) {
default :
console.log("游客");
break;
case 1 :
console.log("普通会员");
break;
case 2 :
console.log("VIP会员");
break;
case 3 :
console.log("管理员");
break;
}
【示例4】在下面代码中,JavaScript 先检测 case 表达式的值,由于 case 表达式的值都不匹配,则跳转到 default 子句执行,然后继续执行 case 1 和 case 2 子句。但是,不会返回 default 子句再重复执行。
var id = 3;
switch (id) {
default :
console.log("游客");
case 1 :
console.log("普通会员");
case 2 :
console.log("VIP会员");
}
【示例5】下面示例使用 switch 语句设计一个四则运算函数。在 switch 结构内,先使用 case 枚举 4 种可预知的算术运算,当然还可以继续扩展 case 子句,枚举所有可能的操作,但是无法枚举所有不测,因此使用 default 处理意外情况。
function oper (a,b,opr) {
switch (opr) {
case "+" : //正常枚举
return a + b;
case "-" : //正常枚举
return a - b;
case "*" : //正常枚举
return a * b;
case "/" : //正常枚举
return a / b;
default : //异常处理
return "非预期的 opr 值";
}
}
console.log(oper (2,5,"*")); //返回10
default 语句与 case 语句简单比较如下:
语义不同:default 为默认项,case 为判例。
功能扩展:default 选项是的,不可以扩展。而 case 选项是可扩展的,没有限制。
异常处理:default 与 case 扮演的角色不同,case 用于枚举,default 用于异常处理。
- 随机文章
- 中国 马尔代夫 军事(中马军事合作升级,中国与马尔代夫联合军演展示军事实力)
- 中国姐妹马尔代夫(中国姐妹畅游马尔代夫,绽放青春活力)
- 马尔代夫餐厅高级(马尔代夫顶级餐厅:品尝世界级美食)
- 推荐马尔代夫视频(《探秘马尔代夫:仙境般的海底世界》- 马尔代夫旅行指南)
- 马尔代夫黑衣模特(马尔代夫黑衣模特惊艳展现时尚魅力)
- 广州马尔代夫海运(广州至马尔代夫海运开通,航线更便捷)
- 日本空袭马尔代夫(日本空袭马尔代夫岛,造成数十人死伤)
- 台州马尔代夫在哪(台州哪个地方可以体验马尔代夫风情?)
- 俯瞰马尔代夫市区(俯瞰马尔代夫市区:美丽景色尽收眼底)
- 旅游马尔代夫价位(马尔代夫旅游:预算范围内的美丽天堂)
- 孝感马尔代夫拍照(夫妇在孝感打造马尔代夫式人妻度假照)
- 带鱼竿去马尔代夫(带鱼竿玩转马尔代夫,全新海钓体验!)
- 河南孟津马尔代夫(河南孟津打造马尔代夫式海岛度假胜地)
- 深圳马尔代夫海鲜(深圳马尔代夫特色海鲜盛宴等你来享!)
- 绵阳马尔代夫价格(新标题:绵阳到马尔代夫旅游价格优惠)
- 苏州马尔代夫美食(苏州美食:打造最真实的马尔代夫味道)
- 贵阳马尔代夫攻略(贵阳直飞马尔代夫,轻松玩转海上仙境)
- 类似马尔代夫岛屿(打造独一无二的珊瑚岛屿,美不胜收!)
- 深圳马尔代夫露营(深圳户外达人露营“马尔代夫”式享受)
- 丽芙 马尔代夫(丽芙度假村:享受极致马尔代夫之旅)
- 洲际马尔代夫项目(洲际酒店集团在马尔代夫揭幕新度假村)
- 冰岛 马尔代夫(冰岛与马尔代夫:两个迥然不同的自然奇观)
- 选岛 马尔代夫(探秘马尔代夫:美丽岛屿等你来发现!)
- 重庆马尔代夫烤肉(重庆市民在“马尔代夫”尝鲜烤肉体验)
- 马尔代夫交通发达(马尔代夫拥有便捷出行,交通设施完善)
- 眉山马尔代夫弱水(眉山打造马尔代夫弱水的新型旅游景点)
- 吉林 马尔代夫(吉林推出马尔代夫主题公园成热门打卡地)
- 马尔代夫中国重庆(中国重庆:马尔代夫度假胜地人气不减)
- 马尔代夫事件女主(马尔代夫事件女主受到死亡威胁后获释)
- 直播马尔代夫美景(直播马尔代夫天堂美景,绝美视角呈现)
