JavaScript流程控制-分支

目录

1.流程控制

 2.顺序流程控制

3.分支流程控制

3.1分支结构

3.2 if条件语句

3.2.1单分支

3.2.2双分支

3.2.3多分支

 4.三元表达式

5.switch语句

6.典型例题——个税计算 


1.流程控制

  • 在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能。简单理解: 流程控制就是来控制我们的代码按照什么结构顺序来执行。

  • 流程控制主要有三种结构,分别是顺序结构分支结构循环结构,这三种结构代表三种代码执行的顺序。

 2.顺序流程控制

  • 顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行, 程序中大多数的代码都是这样执行的。

3.分支流程控制

3.1分支结构

  • 由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果

  • JS 语言提供了两种分支结构语句

    • if条件语句

    • switch语句

3.2 if条件语句

3.2.1单分支

  1. 语法结构

    if(条件表达式){

            条件成立,执行代码块;

    }

  2. 执行流程
    1. 判断条件是一个布尔值,当该值为true时,执行 {}中的代码段,否则不进行任何处理。 当代码段中只有一条语句时,{}可以省略

  3. 案例分析——求三个数中的最大值
    var a=+prompt('请输入第一个数');
    var b=+prompt('请输入第二个数');
    var c=+prompt('请输入第三个数');
    var max=a;//假设最大值是a
    if(b>max){
        max=b;
    }
    if(c>max){
        max=c;
    }
    console.log('最大值为:'+max);

3.2.2双分支

  1. 语法结构

    if(条件表达式){

            条件成立,执行此代码块;

    }else{

            否则,执行此代码块

    }

  2. 执行流程
    1. 当判断条件为true时,执行代码段1;当判断条件为false时,执行代码段2

  3. 案例分析——判断闰年
    var year=prompt('请输入年份');
    //能被4整除且不能被100整除、或者能够被400整除的就是闰年
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        alert("这个年份是闰年");
    } else {
        alert("这个年份是平年");
    }

3.2.3多分支

  1. 语法结构

    if(条件表达式1){

            条件表达式1成立,执行代码块1;

    }else if(条件表达式2){

            条件表达式2成立,执行代码块2;

    }

    ......

    else{

            以上条件都不成立,执行此代码块;

    }

  2. 执行流程
    1. 当判断条件1为true时,则执行代码块段1; 否则继续判断条件2,若为true时,则执行代码段2,依次类推;若所有的条件都为false,则执行n+1

  3. 案例分析——判断成绩等级
    var score = prompt('请您输入分数:');
    if (score >= 90) {
        alert('A');
    } else if (score >= 80) {
        alert('B');
    } else if (score >= 70) {
        alert('C');
    } else if (score >= 60) {
        alert('D');
    } else {
        alert('E');
    }

 4.三元表达式

  1. 语法结构
    1. 表达式1 ? 表达式2 : 表达式3;

    2. 执行思路:如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值   类似于 if else (双分支) 的简写

  2. 案例分析——数字补0
    //输入0~59之间的数子,如果小于10,则在前面补0,把一位数转两位数
    var time = prompt('请您输入一个 0 ~ 59 之间的一个数字');
    // 三元表达式 表达式 ? 表达式1 :表达式2
    var result = time < 10 ? '0' + time : time; // 把返回值赋值给一个变量
    alert(result);

5.switch语句

  1. 语法结构:switch 语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用 switch。

    switch(表达式){

            case 值1:
                    代码块1;
                    break;

            case 值2:
                    代码块2;
                    break;
            ......
            default:
            以上条件都不成立,才执行此代码块;
            [break;] //可选

    }

  2.  注意事项
    1. 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量
    2. 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
    3. 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。

  3.  案例分析——输入月份,判断季节
    var month = prompt('请输入月份(1,2,3...)');
            switch (month) {
                case '3':
                case '4':
                case '5':
                    alert(month + '是春季');
                    break;
                case '6':
                case '7':
                case '8':
                    alert(month + '是夏季');
                    break;
                case '9':
                case '10':
                case '11':
                    alert(month + '是秋季');
                    break;
                case '12':
                case '1':
                case '2':
                    alert(month + '是冬季');
                    break;
                default:
                    alert('请输入正确的月份(1,2,3,...)');
            }
  4.  switch 语句和 if else if 语句的区别
    1. 执行效率
      1. 分支较多时,switch语句执行效率比较高,而且结构清晰
      2. 分支较少时,if......else if语句执行效率比switch语句高
    2. switch常用于比较确定值的情况,if......if  else更加灵活,常用于某个范围选择

6.典型例题——个税计算 

应纳个人所得税税额=应纳税所得额*适用税率-速算扣除数

应纳税所得额=扣除五险一金后月收入-扣除标准

扣除五险一金后月收入=总收入-五险一金

五险一金=基准工资*对应比例(例如0.225)

基准工资=总工资(当工资超过7662时,按7662算)

var salary = +prompt('请输入您的工资');
        var flag = +prompt('请输入扣除标准');
        var basesal, wx, wxMon, taxget, tax, taxrate, cutnum;
        if (salary > 7662) {
            basesal = 7662;
        }else{
            basesal = salary;
        }
        wx = basesal * 0.225;
        wxMon = salary - wx;
        taxget = wxMon - flag;
        if (taxget > 0) {
            if (wxMon > 0 && wxMon <= 1500) {
                taxrate = 0.03;
                cutnum = 0;
            } else if (wxMon > 1500 && wxMon <= 4500) {
                taxrate = 0.1;
                cutnum = 105;
            } else if (wxMon > 4500 && wxMon <= 9000) {
                taxrate = 0.2;
                cutnum = 555;
            } else if (wxMon > 9000 && wxMon <= 35000) {
                taxrate = 0.25;
                cutnum = 1005;
            } else if (wxMon > 35000 && wxMon <= 55000) {
                taxrate = 0.3;
                cutnum = 2755;
            } else if (wxMon > 55000 && wxMon <= 80000) {
                taxrate = 0.35;
                cutnum = 5505;
            } else if (wxMon > 80000) {
                taxrate = 0.45;
                cutnum = 13505;
            }
            tax = taxget * taxrate - cutnum;
            console.log('您需要交的税为:' + tax.toFixed(2));
        } else {
            tax = 0
            console.log('您不用交税');
        }
        salary = salary - tax;
        alert('您的税后工资为:' + salary);
  • 52
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值