switch函数用法举例JavaScriptswitchcase语句详解
JavaScript switch case语句详解
switch 语句专门⽤来设计多分⽀条件结构。与 else/if 多分⽀结构相⽐,switch 结构更简洁,执⾏效率更⾼。
语法格式
switch (expr) {
case value1 :
statementList1
break;
case value2 :
statementList2
break;
...
case valuen :
statementListn
break;
default :
default statementList
}
switch 语句根据表达式 expr 的值,依次与 case 后表达式的值进⾏⽐较,如果相等,则执⾏其后的语句段,只有遇到 break 语句,或者switch 语句结束才终⽌;如果不相等,则继续查下⼀个 case。switch 语句包含⼀个可选的 default 语句,如果在前⾯的 case 中没有到相等的条件,则执⾏ default 语句,它与 else 语句类似。
switch 语句流程控制⽰意如图所⽰:
⽰例1
下⾯⽰例使⽤ switch 语句设计⽹站登录会员管理模块。
console.log("普通会员");
break; //停⽌执⾏,跳出switch
case 2 :
console.log("VIP会员");
break; //停⽌执⾏,跳出switch
case 3 :
console.log("管理员");
break; //停⽌执⾏,跳出switch
default : //上述条件都不满⾜时,默认执⾏的代码
console.log("游客");
}
当 JavaScript 解析 switch 结构时,先计算条件表达式,然后计算第⼀个 case ⼦句后的表达式的值,并使⽤全等===运算符来检测两值是否相同。由于使⽤的是全等运算符,因此不会⾃动转换每个值的类型。
⽰例2
case ⼦句可以省略语句,这样当匹配时,不管下⼀个 case 条件是否满⾜,都会继续执⾏下⼀个 case
⼦句的语句。下⾯⽰例演⽰了把普通会员和 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 内任意位置,不会影响多重分⽀⽿朵正常执⾏。下⾯结合⽰例介绍使⽤ default 语句应该注意3 个问题。
⽰例1
如果 default 下⾯还有 case ⼦句,应该在 default 后⾯添加 break 语句,终⽌ switch 结构,防⽌程序突破 case 条件的限制继续执⾏下⾯ case ⼦句。
console.log("游客");
break;
case 1 :
console.log("普通会员");
break;
case 2 :
console.log("VIP会员");
break;
case 3 :
console.log("管理员");
break;
}
⽰例2
在下⾯代码中,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会员");
}
⽰例3
下⾯⽰例使⽤ 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 ⽤于异常处理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论