Switch基本概念
- Switch和if一样都属于
选择结构
, 都会对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
Switch基本格式
switch(条件表达式){
case 表达式:
语句1;
break;
case 表达式:
语句2;
break;
case 表达式n:
语句n;
break;
default:
语句n+1;
break;
}
- 其语义是:
- 计算
条件表达式
的值。 并逐个与case后面表达式的结果值比较 - 当
条件表达式的值
与某个表达式的值
全等时, 执行其后的语句,并且不会再与其它case进行比较 - 如
条件表达式的值
与所有case后的表达式
均不相同时,则执行default后的语句。
- 计算
- 示例
var num = 2;
switch(num){
case 1:
console.log("壹");
break;
case 2:
console.log("贰"); // 输出贰
break;
case 3:
console.log("叁");
break;
default:
console.log("非法数字");
break;
}
Switch注意事项
- case全等于问题
- JavaScript中case判断是否相等时是全等于(===),而不是等于(==),也就是说既会判断类型是否相等又会判断值是否相等
var str = "123"; switch (str){ case 123: console.log("123数字"); break; case "123": console.log("123字符串"); // 输出123字符串 break; default: console.log("default"); break; }
- case后可以是常量也可以是变量
var num = 120; switch (120){ case num: // 这里可以是变量 console.log("120"); // 输出120 break; case 110: // 这里可以是常量 console.log("110"); break; default: console.log("default"); break; }
- JavaScript中case判断是否相等时是全等于(===),而不是等于(==),也就是说既会判断类型是否相等又会判断值是否相等
- 表达式判断问题
- 判断时会先计算表达式的值,再判断
switch (120 + 3){ // 计算后为123 case 120: console.log("120"); break; case 3: console.log("3"); break; case 3 + 120: // 计算后为123 console.log("3 + 120"); // 输出3 + 120 break; default: console.log("default"); break; }
- case的穿透问题
- switch里面的case只要匹配一次其它的都会失效,包括default.
- 在case语句最后增加 break 语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果
var num = 2; switch(num){ case 1: console.log("壹"); case 2: console.log("贰"); // 输出贰 case 3: console.log("叁");// 输出叁 default: console.log("非法数字"); // 输出非法数字 }
- default的位置问题
- default的位置问题
- default语句可以写在switch语句中的任意位置
if语句和switch语句选择
-
分支比较多
且无法穷尽
时最好用 if, 其它情况可以按照个人习惯 - 如果数据量不是很大, 并且数据是固定的可以用Switch