JavaScript day02 运算符,流程控制

目录

 

1.运算符

    1.算术运算符

    2.关系运算符(比较运算符)

    3.逻辑运算符

    4.位运算符

        1.按位与: &

        2.按位或 : |

        3.按位异或 : ^

    5.条件运算符

2.流程控制

    1.程序的流程结构

    2.分支结构

        1.if结构

        2.switch结构

    3.循环结构

        1.循环作用

        2.循环二要素

        3.while循环


1.运算符

    1.算术运算符

        +,-,*,/,%,++,--

    2.关系运算符(比较运算符)

        只要是使用关系运算符比较出来的结果一定是Boolean
        >, <, >=, <=, ==, !=, ===, !==
        1. 10 > 5 : true
        2. "10" > 5 : true
            如果运算符两端有一个操作数是数字的话,那么另外一个也会通过Number()转换成数字,再进行比较
        3. "3" > 5 : false
            先将'3'转换成数字3,再和5比较
        4."10a" > 5 : false
            1.先将10a通过Number()转换,结果为NaN
            2.使用NaN与5进行比较
                NaN与任何数据做!=,结果都是true
                NaN与任何数据除了!=,结果都是false
        5."10a" < 5 : false
        6."张三丰" > "张无忌" :false
            比较每位字符的Unicode码
            最终比较的是"三"和"无"的大小关系
            "三" : 19977
            "无" : 26080
        7."10" > "5" : false
        8."10" < "5" : true
        9."50" > "5" : ture
        10."49" > "5" : false

        === , !==
        "3" == 3 : true
        === : 比较的数据和数据类型必须都相等的情况下,整个结果才为真
            "3" === 3 : false
        !== : 比较的数据和数据类型只要有一个不相等,结果就为true
            "3" !== 3 : true

    3.逻辑运算符

        判断数字n,是否大于3 小于5
        运算符: !, &&, ||

        ! :等同于 python中的 not
           对现有条件取反
           非真既假,非假既真
        &&:等同于 python中的 and
           关联两个条件,起到 并且 的作用
           关联的两个条件必须同时都为真的时候,整个结果才为真,否则结果才为假
        ||:等同于python中的 or
           关联两个条件,起到 或者 的作用
           关联的连个条件中,只要有一个为true的话,整个结果就为true,只有两个条件同时为false的时候,整个表达式的结果才为false

    练习1:
        1.创建一个网页
        2.从弹窗中录入一个数字,表示年份
        3.判断该年份是否是闰年并输出结果(true 或 false)
          闰年:能被4整除单不能被100整除或能被400整除的年份都是闰年

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var year = Number(prompt("请输入一个年份:"));
        var isRun = year % 400 == 0 || (year % 100 != 0 && year % 4 == 0);
        console.log(year,"是闰年吗?",isRun);
    </script>
</body>
</html>

    练习2:
        从弹框中录入1个字符,判断该字符是英文?中文?数字?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var input = prompt("请输入一个字符:");
        // 判断是否为数字
        var isDig = input >= 0 && input <= 9;
        console.log("是数字吗?",isDig);
        // 判断是否为英文
        var isCap = (input >= "a" && input <= "z") || (input >= "A" && input <= "Z");
        console.log("是英文吗?",isCap);
        // 判断是否为中文
        var isCHN = (input >= "\u4e00" && input <= "\u9fa5")
        console.log("是中文吗:",isCHN)
    </script>
</body>
</html>

    4.位运算符

        1.按位与: &

            3 & 5 
            3 : 011
            5 : 101
            =======
                001
            使用场合:判断一个数字的奇偶性
            任意数字与1做按位与操作,结果为1是奇数,结果为0是偶数
            5 & 1            4 & 1
            5 : 101          4 : 100
            1 : 001             1 : 001    
            =======          =======
                001              000


        2.按位或 : |


            5 | 3 :
            5 : 101
            3 : 011
            =======
                111
            使用场合:任意小数与0做按位或操作,快速取整(抛弃小数位,保留整数位)


        3.按位异或 : ^


            3 ^ 5 :
            3 : 011
            5 : 101
            =======
                110

            var a = 3;
            var b = 5;
            a = a ^ b; // 110
            b = b ^ a; // 011 
            a = a ^ b; // 101

            使用场合:在不借助第三方变量的情况下快速交换两个数字的位置 

    5.条件运算符

        单目运算符 / 一元运算符:只有一个操作数的运算符
            如: ++,--,!,typeof,-
        双目运算符 / 二元运算符:有两个操作符的运算符
            如: +,-,*,/,%,&&,||,&,|,^,>,<,...
        三目运算符 / 三元运算符:有三个操作数的运算符
            如: 条件运算符 ? :
        语法:
            条件表达式 ? 表达式1 : 表达式2;
            先判断条件表达式的结果,如果为true,则执行表达式1的内容,否则,执行表达式2的内容

            等同于python中的:
                if 条件表达式:
                    表达式1
                else:
                    表示式2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var year = prompt("输入年份");
        var isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
        isRun ? console.log(year+'是闰年') : console.log(year+'不是闰年');

        var days = isRun ? 366:365;  // 如果成立 days=366 不成立 days=365
        console.log(days);
    </script>
</body>
</html>

    练习:BMI指数计算
        要求从弹框中录入身高(m)
        要求从弹窗中录入体重(kg)
        BMI = 体重 / (身高 * 身高);

        如果 BMI 小于 18.5 属于 偏瘦
        如果 BMI 大于 23.9 属于 偏胖
        否则 : 正常

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var height= prompt("输入身高:");
        var    weight= prompt("输入体重:");
        var BMI = weight / (height * height);
        console.log("您的指数为:"+BMI)

        BMI < 18.5 ? console.log("偏瘦") : 
            BMI > 23.9 ? console.log("偏胖") :
                console.log("完美身材! ")
    </script>
</body>
</html>

    6.
        ex. 交换 a, b两个变量的值
            a ^= b;
            b ^= a;
            a ^= b;

2.流程控制

    1.程序的流程结构

        1.顺序结构
        2.分支结构(选择结构)
        3.循环结构

    2.分支结构

        1.if结构


             1.
                if(条件){
                    语句块;
                }
                注意:
                    1.条件不是boolean的话,以下情况视为 false
                        if(0.0){}
                        if(0){}
                        if(""){}
                        if(undefined){}
                        if(null){}

                        if(35.5){真}
                        if("真帅"){真}
                    2. if 结构可以省略 {}
                        如果省略的话,if则只控制它下面的第一条语句
                        var input = prompt("输入一个数")
                        if((input & 1) == 1)
                            console.log(input);
                            console.log(input);  // 此句不受if控制

            2.
                if(条件){
                    语句块1
                }else{
                    语句块2
                }
            3.
                if(条件1){
                    语句块1
                }else if(条件2){
                    语句块2
                }else if(条件n){
                    语句块n
                }else{
                    语句块n+1
                }

            练习:
                分三次从弹框中录入年,月,日
                计算该日是该年的第?天

<body>
    <script>
        var year= prompt("输入年:");
        var    month= prompt("输入月:");
        var    day= Number(prompt("输入日:"));
        var tota1Days = 0;
        var isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ;
        if(month == 1){
            tota1Days = day;
        }else if(month == 2){
            tota1Days = 31 + day;
        }else if(month ==3){
            tota1Days = 31 + 28 + day;
        }else if(month == 4){
            tota1Days = 31 + 28 + 31 + day;
        }
        if(month > 2){
            tota1Days += isRun;
        }
        console.log("是第"+tota1Days+"天");

    </script>
</body>
</html>

        2.switch结构

            特点:只能用在等值判断的场合
            语法:
                switch(变量){
                    case 值1:
                        语句块1
                        break; // 可选,跳出switch结构
                    case 值2:
                        语句块2
                        break; // 同上
                    ... ...
                    default:
                        语句块n
                        // 当所有的switch都未匹配上的时候才会执行default
                        // default 块是可选的
                }
                注意:
                    1.变量 和 各个case块后面的值,是采用===的方式来匹配的
                    2.如果case后面不增加break的话,则从匹配的case块开始向下依次执行(不判断),直到结束或碰到break为止

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var year= prompt("输入年:");
        var    month= prompt("输入月:");
        var    day= Number(prompt("输入日:"));
        var tota1Days = 0;
        //累加从 month-1月开始到1月份所有的天数
        switch(month-1){
            case 11:
                tota1Days +=30;
            case 10:
                tota1Days +=31;
            case 9:
                tota1Days +=30;
            case 8:
                tota1Days +=31;
            case 7:
                tota1Days +=31;
            case 6:
                tota1Days +=30;
            case 5:
                tota1Days +=31;
            case 4:
                tota1Days +=30;
            case 3:
                tota1Days +=31;
            case 2:
                tota1Days +=28;
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                    tota1Days +=1;
            case 1:
                tota1Days +=31;
        }
        tota1Days +=day;
        console.log("该日是该年的第",tota1Days,"天")
        
    </script>
</body>
</html>

    3.循环结构

        1.循环作用

            重复的执行相同或相似的代码

        2.循环二要素

            1.循环条件
            2.循环操作
        ex:
            1.想打印100遍Hello World
                条件:从1开始,到100结束
                操作:打印 Hello World
            2.想打印1-100之间所有的数字
                条件:从1开始,到100结束
                操作:打印 条件 的值

        3.while循环


            1.语法
                while(条件){
                    循环操作
                }
            2.ex
                1.打印九九乘法表中的某一行
                    从弹框中录入一个数字,录入的是几,就打印第几行
                    如: 1*5=5    2*5=10    3*5=15    4*5=20    5*5=25

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var n = Number(prompt("请输入一个数"));
        var i = 1;
        var show = ' ';
        while (i <= n){
            show += (i+'*'+n+'='+i*n+'\t');            
            i++;
        }
        console.log(show);
    </script>
</body>
</html>

        4.do...while 循环

            1.ex
                循环的从弹框中录入数据,并将录入的数据打印在控制台上,直到输入exit为止
            2.语法
                do{
                    循环操作
                }while(条件);
            3.流程
                1.先执行循环操作
                2.在判断循环条件
                3.如果条件为真,则继续执行循环操作,否则退出

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        do{
            // 从弹框中录入数据
            var input = prompt("输入数据:");
            // 将录入的数据打印输出
            console.log(input);
        }while(input != "exit");//先打印exit 然后才会退出
    </script>
</body>
</html>

作业:
    分三次输入年,月,日
    判断该日是星期?

    前提:1900.1.1 是星期一
    附加:将该月的日历,打印输出 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        var year=prompt("Year:");
        var month = Number(prompt("Month:"));
        var day = Number(prompt("Day:"));
        var totalDays = 0;

        //计算从1900年开始到year-1年为止,共有多少天
        var i = 1900;
        while(i<year){
            totalDays += 365;
            if(i%4==0&&i%100!=0||i%400==0)
                totalDays += 1;
            i++;
        }
        //计算year年的从1月开始到month-1月为止共有多少天,累加到totalDays后面
        var i=1;
        while(i<month){
            switch(i){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                    totalDays += 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    totalDays += 30;
                    break;
                case 2:
                    totalDays += 28;
                    if(year%4==0&&year%100!=0||year%400==0){
                        totalDays += 1;
                    }

            }
            i++;
        }
        //累加 day 到 totalDays 的后面
        totalDays += day;
        // 用totalDays与7取余,结果就是星期几
        var date = totalDays % 7;
        console.log("星期"+date);
    </script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值