JavaScript基础(四) 之分支结构

分支结构-1

1、程序的流程
    程序 = 数据结构 + 算法

    任何复杂的算法都可以通过 "顺序","分支","循环" 三种结构来表示
2、什么是分支结构
    在不同的情况下,可以选择不同的语句来执行
    当 条件 满足时,执行某些语句 - if结构

    当 条件 满足时,执行某些语句
    当条件 不满足时,执行另外一些语句
                                                            -if ... else 结构
3、if结构
    1、语法
        if(条件){
            //语句块(满足条件时要做的操作)
        }

        条件:尽量放 boolean 的变量 或 表达式

        判断条件
            如果条件 为真的话,则执行语句块中的代码
            如果条件 为假,则跳过语句块,执行其他语句
    2、注意
        1、条件如果不是boolean的话,则会自动转换,以下操作会自动将条件转换为 false,其他都是true
            if(0){}
            if(0.0){}
            if(undefined){}
            if(NaN){}
            if(""){}
            if(null){}

            ex:
                if(35.0){} //true
                if("Hello World"){}//true
                if(0){} //false
        2、if 后的 {} 可以省略不写,如果省略不写的话,那么if只控制它下面的第一条语句
4、if ... else 结构
    1、作用
        当满足条件时,执行某些操作
        当不满足条件时,执行另外一些操作
    2、语法
        if(条件){
            语句块1;
        }else{
            语句块2;
        }

        判断条件的结果
        如果条件为真,则执行语句块1
        否则(条件为假),则执行语句块2
5、else ... if 结构
    1、判断
        输入 一个 考试成绩
            成绩 >= 100 分 ,奖励一台 兰博基尼
            或者 成绩 >= 90分,奖励一台 法拉利
            或者 成绩 >= 80分,奖励一台 奥迪
            或者 成绩 >= 70分,奖励一台 奥拓
            或者 成绩 >= 60分,奖励一台 自行车
            否则 奖励俩 大嘴巴子!
    2、语法
        if(条件1){
            语句块1;
        }else if(条件2){
            语句块2;
        }...else if(条件n){
            语句块n;
        }else{
            语句块n+1;
        }

        流程:
            从上向下判断条件,满足哪个条件则执行对应的语句块,然后跳出整个结构
            所有条件都不满足时,执行else结构
        注意:
            最后的 else 可以省略不写,如果省略的话,以上条件都不满足,则什么都不执行
练习:
    1、将 克莱托指数 计算 改成 选择结构版本
    2、分别输入 年,月,日,判断该日是这一年的第 ? 天
        输入年:2017
        输入月:1
        输入日:22
        2017年1月22日是2017年的第22天

        输入年:2017
        输入月:4
        输入日:15
        2017年4月15日是2017年的第105天
        (31+28+31+15) = 105
    <script>
         /*输入身高体重*/
            function calClt(){
                var height = prompt("Height:");
                var weight = prompt("Weight:");
                var clt = weight / (height * height);
                if(clt < 20){
                    alert("您偏瘦");
                }else if(clt > 25){
                    alert("您偏胖");
                }else{
                    alert("正常!");
                }
            }

            /*输入年月日,判断该日是该年的第?天*/
            function calDate(){
                var year = prompt("请输入年:");
                var month = prompt("请输入月:");
                var day = Number(prompt("请输入日:"));
                //判断year是否为闰年
                var isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
                //声明totalDays 变量,用于保存总天数 
                var totalDays = 0;
                //根据用户输入的月份给出相应提示
                if(month == 1){
                    totalDays = day;
                }else if(month == 2){
                    totalDays = 31 + day;
                }else if(month == 3){
                    totalDays = 31 + 28 + day;
                }else if(month == 4){
                    //累加 1月,2月,3月总天数,以及4月份输入的天数
                    totalDays = 31 + 28 + 31 + day;
                }else if(month == 5){
                    totalDays = 31 + 28 + 31 + 30 + day;
                }else if(month == 6){
                    totalDays = 31 + 28 + 31 + 30 + 31 + day;
                }

                //判断是否为2月以后以及是否为闰年,如果满足的话,再追加1天
                if(month > 2 && isRun){
                    totalDays += 1;
                }

                //将提示输出的内容放在 选择结构 之外
                console.log(year+"年"+month+"月"+day+"日是"+year+"年的第"+totalDays+"天");
            }
        </script>

分支结构-2

1、"等值" 判断的分支结构 - switch
    1、语法
        switch(变量/表达式){
            case 值1:
                语句块1;
                break; -- 结束switch的运行,可选的
            case 值2:
                语句块2;
                break; -- 结束switch的运行,可选的
            case ...:
                语句块....;
                break;
            default:
                语句块n;
                break;
        }
        流程:
            1、计算 switch后的 变量 或 表达式的值
            2、判断值与哪个case块后面的值能匹配上,匹配上哪个case块则执行哪个语句块
            3、碰到 break , 则结束switch结构的运行,如果没有break,则继续执行后续的case块,直到碰到break,或执行结束为止
            4、如果任何case都没有匹配上的话,并且具备default模块的话,则执行default里面的内容。否则什么都不执行
        注意:
            1、各个case块与default之间的位置可以随便放
            2、JS 默认是采用 === 的方式做等值判断的
                1 和 "1" 是不相等的
    2、特殊用法 - 直落
        直落:两个 或 多个case块要执行相同的内容,可以采用直落的形式
        switch(变量/表达式){
            case 值1:
            case 值2:
            case 值3:
                语句块;
                break;
        }
        1、计算 变量 或 表达式的值
        2、如果计算出来的值是 值1或值2或值3,都执行相同的语句块。

        month = Number(prompt());
        switch(month-1){
            case 11:
                totalDays += 30;
            case 10:
                totalDays += 31;
            ... ...
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值