JS04- 分支控制语句(if语句//switch语句)

计算机三大流程控制语句

计算机的三大流程控制语句

顺序控制语句
计算机程序的默认执行顺序
从上至下,从左至右

分支控制语句
if switch
根据条件判断的结果,执行程序
要么没有执行内容,要么只有一种执行结果

循环控制语句
while for for…in forEach
根据给定的循环条件来循环往复的执行程序

大概介绍

if判断和switch
(1),应用
if判断使用的范围更广,频率更高
判断范围,判断逻辑表达式,判断嵌套
switch:判断全等于某个数值

        (2), if有4种语法形式
               if(){}
               if(){}else{}
               if()else if(){}else if(){}...
               if()else if(){}else if(){}...else{}

        (3), switch有2中语法形式
            switch(变量){
                case 数值1 :
                    程序1;
                    break;
                case 数值2 :
                    程序3;
                    break;
                case 数值3 :
                    程序3;
                    break;
                
                .....

                default:
                    程序;
                    break;
            }

            switch的穿越语法

            switch(变量){
                case 数值1 :
                case 数值2 :
                case 数值3 :
                    程序1;
                    break;

                case 数值4 :
                case 数值5 :
                case 数值6 :
                    程序2;
                    break;
                
                .....

                default:
                    程序;
                    break;
            }

注意:
执行 全等判断 时 switch 的效率 高于 if判断
swith也可以做判断嵌套,但是一般不适用
else 和 default 功能是相同的,都是不满足所有条件时,执行的程序,一般用作容错处理

简单if语句和三元运算

所谓的三元运算符,就等价于简单的if语句
这里的简答if语句,指的是没有嵌套的if语句,只是就简单的if…else语句
实际中if语句往往是可以嵌套的

demo
如果是偶数,判断是否在20-50之间,如果在输出 这个数是偶数,在20-50之间
如果不在,输出, 这个数是偶数,不在20-50之间

如果是奇数,判断是否在60-80之间,如果在输出 这个数是奇数,在60-80之间
如果不在输出, 这个数是奇数,不在60-80之间

执行思路:
1,判断数值是奇数偶数
2-1,奇数,判断范围,60-80
2-2,偶数,判断范围.20-50

        var int = 55;
        判断如果是奇数
        if(int % 2 != 0){   
            奇数的情况,再做判断,范围 60-80
            if(int >= 60 && int <= 80 ){
                console.log(int + '是奇数,在60-80范围内');
            }else{
                console.log(int + '是奇数,不在60-80范围内');
            }
        }else{
            偶数情况,再做判断,范围 20-50
            if(int >= 20 && int <= 50 ){
                console.log(int + '是偶数,在20-50范围内');
            }else{
                console.log(int + '是偶数,不在20-50范围内');
            }
        }

这样的if嵌套,就不要写成三元运算符的形式

if判断

if判断的基本语法形式

1, if( 表达式 ){执行程序}
当表达式的结果为true,执行程序
当表达式的结果为false,没有执行程序

当月薪超过 10W , 可以获得 零花钱 100 元
当月薪小于 10W , 就没有零花钱
var pay = 50000;
if(pay > 100000){
    console.log('恭喜我自己,获得 100 元零花钱');
}

2 , if(表达式){程序1}else{程序2}
当表达式 结果为 true , 执行 程序1
当表达式 结果为 false, 执行 程序2

当月薪超过 10W , 可以获得 零花钱 100 元
当月薪小于 10W , 可以获得 零花钱 50 元
var pay = 150000;
if(pay > 100000){
    console.log('恭喜我自己,获得 100 元零花钱');
}else{
    console.log('恭喜我自己,获得 50 元零花钱');
}

3 , if(条件1){程序1}else if(条件2){程序2}else if(条件3){程序3}…
当满足条件1,执行程序1,
当满足条件2,执行程序2…
满足哪个条件就执行哪个条件的程序
判断的顺序是从上至下,如果满足了第一个条件,之后的条件都不会再判断和执行
最终只会执行一个程序
如果所有的条件都不满足,是没有执行内容的

    var pay = 50000;

    if(pay > 100000){
        console.log('恭喜我自己,获得 100 元零花钱');
    }else if(pay > 90000 && pay < 100000){
        console.log('恭喜我自己,获得 90 元零花钱');
    }else if(pay > 80000 && pay < 90000){
        console.log('恭喜我自己,获得 80 元零花钱');
    }else if(pay > 70000 && pay < 80000){
        console.log('恭喜我自己,获得 70 元零花钱');
    }

4 , if(条件1){程序1}else if(条件2){程序2}else if(条件3){程序3}…else{}
从第一个条件开始判断,满足那么个条件就执行对应的程序
满足当前条件之后,执行对应的当前程序,之后的else if(),else 不会执行
如果所有的条件都不满足,会执行 else 中的程序

    if(pay >= 100000){
        console.log('恭喜我自己,获得 100 元零花钱');
    }else if(pay >= 90000 && pay < 100000){
        console.log('恭喜我自己,获得 90 元零花钱');
    }else if(pay >= 80000 && pay < 90000){
        console.log('恭喜我自己,获得 80 元零花钱');
    }else if(pay >= 70000 && pay < 80000){
        console.log('恭喜我自己,获得 70 元零花钱');
    }else{
        console.log('工资少于7W,我只能跪搓衣板');
    }

if语句,写判断条件时,要注意边界值的设定

5.成绩输出
根据成绩输出 内容

定义一个随机数,生成的数值是 1-100范围之内的随机整数
        var res = parseInt(Math.random()*100+1);
	    console.log(res);
程序执行从第一个条件来判断,判断res == 100 
如果满足条件执行执行程序
        if(res == 100){
            console.log(`恭喜您考取的${res}分,获得最强王者称号`);       
当我们进入到第二个条件时,一定是第一个条件不满足
也就是 满足 大于 90的条件 但是 一定不会是 100
如果是100,就执行了第一个条件
        }else if(res >= 90 ){
            console.log(`恭喜您考取的${res}分,获得星耀称号`);
当执行到第三个条件时,第一个和第二个条件一定是不满足的
此时就保证这个数值 是 小于 90的
        }else if(res >= 80 ){
            console.log(`恭喜您考取的${res}分,获得钻石称号`);
        }else if(res >= 70 ){
            console.log(`恭喜您考取的${res}分,获得铂金称号`);
        }else if(res >= 60 ){
            console.log(`恭喜您考取的${res}分,获得黄金称号`);
        }else if(res < 60 && res >= 0){
            console.log(`恭喜您考取的${res}分,这个游戏不适合你,还是删除了吧`);  
一般else 做容错处理
        }else {
            console.log('您的考试成绩有误,请您在好好瞅瞅')
        }

总结
1,if语句()中的条件,可以根据项目需求做调整
只要能实现项目需求,爱怎么写怎么写
2,else 一般做容错处理,当有非负数据参与执行,我们执行else的程序
3,else 之后没有(),没有条件,不要多加内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

switch语句

switch语句也是判断语句形式的一种
功能与if判断基本相同,只是使用环境不同

if语句,往往做比较判断,判断是范围
逻辑运算符,使用if语句做判断

switch 判断等于,某个具体数值时,我们使用switch语句
switch的执行效率高于if判断

switch一定能写成if,但是有些if不适合写成switch

在这里插入图片描述
有商品编号 1-5 5种商品 , 根据不同的商品编号,输出商品信息

    var num = parseInt(Math.random() * 5 + 1);

    if (num == 1) {
        console.log(`随机数是${num},输出的是第一种商品的信息`);
    } else if (num == 2) {
        console.log(`随机数是${num},输出的是第二种商品的信息`);
    } else if (num == 3) {
        console.log(`随机数是${num},输出的是第三种商品的信息`);
    } else if (num == 4) {
        console.log(`随机数是${num},输出的是第四种商品的信息`);
    } else if (num == 5) {
        console.log(`随机数是${num},输出的是第五种商品的信息`);
    } else {
        console.log('您输入的商品编号有误,无法查询对应的商品信息');
    }

如果判断是否等于某个值,例如 5
if需要从第一个条件开始执行判断,执行到5,要多判断4次 false
如果判断较多,执行效率就会比较低
此时就推荐使用 switch 语法

switch 是 根据变量的数值,来进行定位
如果 num 数值是5,直接定义到5,执行对应的程序内容
不会做过多的判断,效率就比if判断的效率高

switch(变量){
    case 变量的数值1:
        执行的对应的程序1
        break;
    case 变量的数值2:
        执行的对应的程序2
        break;
    case 变量的数值3:
        执行的对应的程序3
        break;
    
    ..... 可以无限写

    default:
        执行的对应的程序
        break;

}

case     是变量对应的数值,要执行的对应程序
            对于数值的判断,执行的 === 严格比较 / 全等判断 

defalut  对应的是 if语句中的 else
            也就是当变量的数值,不满足所有的 case 时 , 执行的程序

break    终止语句
            swith默认会从定位的位置开始,执行之后所有的程序
            除非遇到break关键词,才会终止程序的执行
            因此,每一个case的定位,每一种执行情况,都要配合一个break 做终止
            防止程序执行的冲突
            最后一个程序,可以不加 break,加不加,看个人习惯

switch (num) {
    case 1:
        console.log(`随机数是${num},输出的是第一种商品的信息`);
        break;
        
    case 2:
        console.log(`随机数是${num},输出的是第二种商品的信息`);
        break;
        
    case 3:
        console.log(`随机数是${num},输出的是第三种商品的信息`);
        break;
    case 4:
        console.log(`随机数是${num},输出的是第四种商品的信息`);
        break;
        
    case 5:
        console.log(`随机数是${num},输出的是第五种商品的信息`);
        break;
        
    default:
        console.log('您输入的商品编号有误,无法查询对应的商品信息');
        break;
}

if判断 和 swith判断

if判断 : 多用于 判断范围 逻辑表达式 判断的嵌套
switch判断 : 全等判断 switch穿越

随时获取月份 , 输出当月是多少天

随机生成1-12的随机数

var month = parseInt(Math.random()*12+1);

if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 ){
    console.log(`现在是${month}月,这个月有31天`);
}else if(month == 4 || month == 6 || month == 9 || month == 11){
    console.log(`现在是${month}月,这个月有30天`);
}else if(month == 2){
    console.log(`现在是${month}月,这个月有28天,如果是闰年,是29天`);
}else{
    console.log('您的月份输出错误,您过的是地球的日子吗?');
}

swith判断的穿越语法

如果定位是满足第一种情况,会从定位位置,一直向下执行,输出内容,遇到break再停止
也就是 month 等于 1.3.5.7.8.10.12 时,最终穿越到,相同的程序执行

  switch(month){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            console.log(`现在是${month}月,这个月有31天`);
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            console.log(`现在是${month}月,这个月有30天`);
            break;
        case 2:
            console.log(`现在是${month}月,这个月有28天,如果是闰年,是29天`);
            break;
        default:
            console.log('您的月份输出错误,您过的是地球的日子吗?');
            break;
    }

案例

1,闰年的判断

if判断
生成4位随机数,表示年份 1000-9999
var year = parseInt(Math.random()*(9999-1000+1) + 1000 );
写判断
满足闰年的条件,就输入闰年
if( ( year % 400 == 0 )  || (  (year % 4 == 0) && (year % 100 != 0) ) ){
    console.log(`${year}是闰年`);
}else{
    不满足闰年的条件
    console.log(`${year}是平年`);
}
三元运算符
//
console.log(  ( year % 400 == 0 )  || (  (year % 4 == 0) && (year % 100 != 0) ) ?  `${year}是闰年` : `${year}是平年`   )
//
var res =  ( year % 400 == 0 )  || (  (year % 4 == 0) && (year % 100 != 0) ) ?  `${year}是闰年` : `${year}是平年`;
console.log( res );
//
( year % 400 == 0 )  || (  (year % 4 == 0) && (year % 100 != 0) ) ? console.log(`${year}是闰年`)  : console.log(`${year}是平年`) ;

2.1-100的随机数 — 判断奇数偶数

var n1 = parseInt(Math.random()*(100+1-1) + 1);
if(n1 % 2 == 0){
    console.log(`${n1}是偶数`);
}else{
    console.log(`${n1}是奇数`);
}
console.log( n1 % 2 == 0 ? `${n1}是偶数` :  `${n1}是奇数` );

3.输出 456-789的所有可以被2,3,4整除的数值

var i = 456;
while(i <= 789){
    //
    if( i % 12 == 0 )
    // 
    if( i % 2 == 0 &&  i % 3 == 0 &&  i % 4 == 0   ){
        console.log(`${i}可以被2,3,4同时整除`)
    }
    i++;
}
console.log('')

修改步长
找到第一个可以被2,3,4整除的数值,正好是456
循环变量的初始值,就是456

var i = 456;
while(i <= 789){
    console.log(`${i}可以被2,3,4同时整除`)
    i += 12;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值