js的switch

 

        ​   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;
                }
 
原文地址:https://www.cnblogs.com/yunhai666/p/12987851.html