【JavaScript】switch语句

一、switch语句

switch语句的语法和应用特点

1.switch语句的语法结构

switch (值) {
    case 值:
        满足case后面的值执行的代码块, 忽略花括号;
        break;
    case 值:
        满足case后面的值执行的代码块, 忽略花括号;
        break;
    case 值:
        满足case后面的值执行的代码块, 忽略花括号;
        break;
    case 值:
        满足case后面的值执行的代码块, 忽略花括号;
        break;
    case 值:
        满足case后面的值执行的代码块, 忽略花括号;
        break;
        ...
    default:
            除了上面之外的值要执行的代码块
}

2.解读switch语句的应用,解读switch语句的关键字

  1. switch适合多分支。
  2. switch括号里面和case后面的值进行恒等比较,满足那个case,执行后面对应的语句块。
  3. case表示一个分支,case具有穿透力,如果没有break,进行执行其他case后面的语句。
  4. break结束switch语句。
  5. default表示其他情形,case都不满足的情况下,执行default里面的代码块,可以省略。

案例1:switch语句实现输入数字0-6,输出对应的星期日-星期六

// 案例:输入数字0-6,输出对应的星期日-星期六
    var week = +prompt('请输入数字0-6:');
    // 假设week = 6,switch执行1次找到目标
    switch (week) {
        case 0:
            alert('星期日');
            break;
        case 1:
            alert('星期1');
            break;
        case 2:
            alert('星期2');
            break;
        case 3:
            alert('星期3');
            break;
        case 4:
            alert('星期4');
            break;
        case 5:
            alert('星期5');
            break;
        case 6:
            alert('星期6');
            break;
        default:
            alert('输入有误');
    }

案例1:if语句实现输入数字0-6,输出对应的星期日-星期六

 var week = +prompt('请输入数字0-6:');
    // 假设week = 6,if执行7次才到目标,按照顺序从上往下
    if (week === 0) {
        alert('星期日')
    } else if (week === 1) {
        alert('星期1');
    } else if (week === 2) {
        alert('星期2');
    } else if (week === 3) {
        alert('星期3');
    } else if (week === 4) {
        alert('星期4');
    } else if (week === 5) {
        alert('星期5');
    } else if (week === 6) {
        alert('星期6');
    } else {
        alert('输入有误');
    }


3.switch语句和if语句的区别总结

1.一般情况下,这两个语句是可以相互替换的;
2.switch语句通常处理case为比较确定的值的情况, 而if…else…语句更加灵活, 常用于范围判断;
3.switch语句进行条件判断后直接执行对应的case语句, 而if语句根据条件按照顺序执行;所以当分支比较少的时候if语句的执行效率比switch语句高; 反之switch效率更高。
案例2:if语句实现输入分数,判定成绩等级(5个等级0-100)-if与和switch语句实现
90 -> 100:优秀
80 -> 90:良好
70 -> 80:一般
60 -> 70:及格
0 -> 60:不及格

var score = +prompt('请输入分数0-100:');
    if (score >= 90 && score <= 100) {
        console.log('优秀');
    } else if (score >= 80 && score < 90) {
        console.log('良好');
    } else if (score >= 70 && score < 80) {
        console.log('一般');
    } else if (score >= 60 && score < 70) {
        console.log('及格');
    } else if (score >= 0 && score < 60) {
        console.log('不及格');
    } else {
        console.log('输入有误');
    }

案例2:switch语句实现输入分数,判定成绩等级(5个等级0-100)-if与和switch语句实现
90 -> 100:优秀
80 -> 90:良好
70 -> 80:一般
60 -> 70:及格
0 -> 60:不及格

//var score = +prompt('请输入分数0-100:');
    //switch(true)与switch(确定值)的区别
   // switch...case...语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较
    switch (true) {
        case score >= 90 && score <= 100:
            console.log('优秀');
            break;
        case score >= 80 && score < 90:
            console.log('良好');
            break;
        case score >= 70 && score < 80:
            console.log('一般');
            break;
        case score >= 60 && score < 70:
            console.log('及格');
            break;
        case score >= 0 && score < 60:
            console.log('不及格');
            break;
        default:
            console.log('输入有误');
    }

案例3:switch语句实现使用 prompt方法 接收一个年份 和 月份 判断这个月有多少天(if-else语句) 将结果输出到控制台
// 大月:1,3,5,7,8,10,12 - 31
// 小月:4,6,9,11 - 30
// 平月:2 - 闰年29,非闰年28

// switch实现
    var year = +prompt('请输入4位年份:');
    var month = +prompt('请输入月份:');
    switch (month) { //利用case穿透力
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            alert('31天');
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            alert('30天');
            break;
        case 2:
            if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { //判断闰年
                alert('29天');
            } else {
                alert('28天');
            }
            break;
        default:
            alert('输入有误');
    }

案例3:if语句实现使用 prompt方法 接收一个年份 和 月份 判断这个月有多少天(if-else语句) 将结果输出到控制台
// 大月:1,3,5,7,8,10,12 - 31
// 小月:4,6,9,11 - 30
// 平月:2 - 闰年29,非闰年28

// if语句实现
    var year = +prompt('请输入4位年份:');
    var month = +prompt('请输入月份:');
    if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
        alert('31天');
    } else if (month === 4 || month === 6 || month === 9 || month === 11) {
        alert('30天');
    } else if (month === 2) {
        if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { //判断闰年
            alert('29天');
        } else {
            alert('28天');
        }
    } else {
        alert('输入有误');
    }

案例4: 使用prompt函数接收一个年月日,计算这一天是这一年的第几天。
// 分析:
// 2022 - 5 - 10 1(31)+2(28)+3(31)+4(30)+5(10) = 130
// 2022 - 3 - 17 1(31)+2(28)+3(17) = 76
// 2022 - 12 - 31 =365 12月不存在计算正月的
// 输入年月日
// 当前的月份都不算整月,当前月份之前的月份计算整月,每一个月的天数
// 2月要单独判断,涉及到闰年

  	var y = +prompt('请输入年份:');
    var m = +prompt('请输入月份:');
    var d = +prompt('请输入日期:');
    var result = 0; //统计结果
    result += d; //累加当前月份的天数,继续通过判断累加前面整月的天数
    switch (m - 1) {
        case 11:
            result += 30;
        case 10:
            result += 31;
        case 9:
            result += 30;
        case 8:
            result += 31;
        case 7:
            result += 31;
        case 6:
            result += 30;
        case 5:
            result += 31;
        case 4:
            result += 30;
        case 3:
            result += 31;
        case 2:
            result += (y % 4 === 0 && y % 100 !== 0 || y % 400 === 0) ? 29 : 28;
        case 1:
            result += 31;
            break;
        default:
            alert('输入有误');
    }
    alert(result);
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芒果Cake

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值