? swith语句:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
...
default:
语句体 n+1;
break;
}
switch 语句的结束条件【非常重要】
- 情况a:遇到break就结束,而不是遇到default就结束。(因为break在此处的作用就是退出switch语句)
- 情况b:执行到程序的末尾就结束。
case穿透的问题
switch 语句中的`break`可以省略,但一般不建议(对于新手而言)。否则结果可能不是你想要的,会出现一个现象:case穿透。
例子 var num = 4; //switch判断语句 switch (num) { case 1: console.log("星期一"); break; case 2: console.log("星期二"); break; case 3: console.log("星期三"); break; case 4: console.log("星期四"); //break; case 5: console.log("星期五"); //break; case 6: console.log("星期六"); break; case 7: console.log("星期日"); break; default: console.log("你输入的数据有误"); break; }
case4和case5中没有break,语句执行到case6才终止
另外,语句的结束与 default 的顺序无关。
switch 语句的实战举例:替换 if 语句
实战开发中,经常需要根据接口的返回码 retCode
let retCode = 1003; // 返回码 retCode 的值可能有很多种情况 if (retCode == 0) { alert(‘接口联调成功‘); } else if (retCode == 101) { alert(‘活动不存在‘); } else if (retCode == 103) { alert(‘活动未开始‘); } else if (retCode == 104) { alert(‘活动已结束‘); } else if (retCode == 1001) { alert(‘参数错误‘); } else if (retCode == 1002) { alert(‘接口频率限制‘); } else if (retCode == 1003) { alert(‘未登录‘); } else if (retCode == 1004) { alert(‘(风控用户)提示 活动太火爆啦~军万马都在挤,请稍后再试‘); } else { // 其他异常返回码 alert(‘系统君失联了,请稍候再试‘); }
修改
let retCode = 1003; // 返回码 retCode 的值可能有很多种情况 switch (retCode) { case 0: alert(‘接口联调成功‘); break; case 101: alert(‘活动不存在‘); break; case 103: alert(‘活动未开始‘); break; case 104: alert(‘活动已结束‘); break; case 1001: alert(‘参数错误‘); break; case 1002: alert(‘接口频率限制‘); break; case 1003: alert(‘未登录‘); break; case 1004: alert(‘(风控用户)提示 活动太火爆啦~军万马都在挤,请稍后再试‘); break; // 其他异常返回码 default: alert(‘系统君失联了,请稍候再试‘); break; }
实战开发中,凡是有重复的地方,我们都必须要想办法简化。
let day = 2; switch (day) { case 1: console.log(‘work‘); break; case 2: console.log(‘work‘); break; case 3: console.log(‘work‘); break; case 4: console.log(‘work‘); break; case 5: console.log(‘work‘); break; case 6: console.log(‘relax‘); break; case 7: console.log(‘relax‘); break; default: break; }
修改
let day = 2; switch (day) { case 1: case 2: case 3: case 4: case 5: console.log(‘work‘); break; // 在这里放一个 break case 6: case 7: console.log(‘relax‘); break; // 在这里放一个 break default: break; }