• 3:运算符 + 运算符优先级 [ 逻辑短路 ]


    知识梳理

    //1 浮点数不要直接参与数学运算
    //2 逻辑运算中的 逻辑中断是个重要知识点
    //3 后加加  表达式先返回值 变量再自增1
    //4 一元运算中的 逻辑非 优先级最高

    一  算数运算符

    1)基本使用

    加 减 乘 除 取模
    应该避免用浮点数运算和相等比较

    2)浮点数运算

    尽量避免让浮点数直接参与运算 会有误差
    
    原理:程序需要把浮点数转化为二进制,再进行运算,就会有误差
    
    console.log(0.1+0.2); //竟然不是0.3  而是:0.30000000000000004
    console.log(0.07 * 100); //竟然不是7 而是:7.000000000000001

    3)浮点数比较

    var num = 0.1 + 0.2;
    console.log(num == 0.3);//返回 false 它们不相等
    
    不要直接用浮点数做相等比较
    
    浮点数值最高精度是17位小数,但是在计算的时候精度远远不如整数

    4)如何判断一个数能否被整除

    它的余数是0,就说明这个数能被整除
    这是 取模
    % 最主要的使用场景

    二 递增递减运算符

    1)概念

    //1 自增自减必须配合变量使用
    //2 前加加 和 后加加 单独使用时结果是一样的
    //3 与其他代码一起使用时,结果会不一样
    //4 工作中最常用的是后加加

    1)前加加

    //1 表达式先自增1,再返回值
    
    //2 表达式的值  和 变量的值是同步的

    2)后加加 [ 重难点 ]

    //1 表达式先返回原值  变量再自增1
    
    //2 变量的值始终比表达式的值大1

    3)demo练习

    <script>
        //++a 先自加 再返回自增后的值
        //前置比较好理解 表达式的返回值和变量值是同步的
        var a = 10;
        ++a; //表达式++a=11 变量a=11
        var b = ++a + 2; //表达式++a=12 变量a=12
        console.log(b);//14
    
        //后加加:先返回表达式原值 变量再自加1
        var c = 10;
        c++;//表达式c++=10  变量c=11
        var d = c++ +2;//1表达式c++ = 11 变量c=12 //2 我们这里使用的是表达式c++
        console.log(d);//13
        console.log(c);//12
    
        //重点理解这个
        var e = 10;
        var f = e++ + ++e;//1 表达式e++=10 变量e=11 //2 表达式++e=12 变量e=12
        console.log(f);//10+12=22
    </script>

    三  比较运算符

    1)基本使用

    大于 大于等于  小于  小于等于  等于 不等于  全等于 全不等

    2)难点

    //1 等于:值相等就是真 类型不同没有关系
    //2 全等于:一摸一样 要求两边的值要相等 并且 类型也要相同才为真
    console.log(18 == '18');//true [ 系统把字符串18转换为数字类型后再比较 ]
    console.log(18 === '18');//false 

    四  逻辑运算符

    1)布尔值参与运算

    逻辑与  &&  and     true&&false = false  //有一个条件是假 整个表达式结果就是假
    
    逻辑或  ||  or      true||false = true  //有一个条件是真 整个表达式结果就是真
    
    逻辑非  !   not     !true = false        //真变成假  假变成真

    demo练习

    <script>
        var num = 7;
        var str = "我爱你~中国~";
        console.log(num > 5 && str.length >= num); // true
        console.log(num < 5 && str.length >= num); // false 左边表达式为假
        console.log(!(num < 10)); // false 括号里为真
        console.log(!(num < 10 || str.length == num)); // false 括号里为真
    </script>

    2)短路运算 ( 逻辑中断 )

    //1 正常情况:布尔值参与运算  true && false = false
    
    //2 特殊情况:值或表达式参与逻辑运算,123 && 456 结果是啥? 用到了短路运算
    
    //3 短路运算原理:当有多个表达式(或值)时,左边表达式的值可以确定结果时,就不再运算右边表达式

    2.1 逻辑与短路运算

    //1 第一个表达式的值为真  返回表达式2
    
    //2 第一个表达式的值为假  返回表达式1  [ 逻辑中断 后面的就不执行了 ]
    console.log(123 && 456);//返回 456
    console.log(0 && 456);//返回0  在数字中只有0是false
    console.log(0 && 456 && 100);//返回0  表达式1为假 后面就不执行了

    2.2 逻辑或短路运算

    //1 第一个表达式的值为真  返回表达式一  [ 逻辑短路 后面的不执行了 ]
    
    //2 第一个表达式的值为假  且第二表达式值为真 直接返回表达式二  [ 后面的就不执行了 ]

    //3 如果第二个表达式值为假 返回第三个表达式
    console.log(123 || 456);//返回 123
    console.log(0 || 456);//返回456
    
    console.log('' || NaN || 0 || 100);//返回100 [ 重点理解这个 ]
    //1 表达式1的假  返回表达式2
    //2 表达式2的值也是假  返回表达式3
    //3 表达式3的值也是假 返回表达式4
    // 如果后面还有 依次类推比较

    2.3 逻辑中断非常重要

    会影响到代码的执行结果
    var
    num = 0; console.log(123 || num++);//逻辑或的逻辑中断 123为真 后面的num++就没有执行 console.log(num);//所有 变量num还是0

    五  赋值运算符

    =   直接赋值

    += -= 加减一个数后再赋值

    *= /= %= 乘 除 取模后再赋值

    var num = 10;
    num += 5; 等同于 num = num + 5;

     代码示例

    //加等 +=
    var num = 15;
    num += 5;//num+5后再赋值给num
    console.log(num);//20
    
    //模等 %=
    var num = 15;
    num %= 2;//num = num % 2; 取模运算后把值赋给左边的变量
    console.log(num);//1  15除以2=7余1

    六  运算符优先级

    1   小扩号     ()
    
    2   一元运算符    ++ -- !  [ 一元运算符:一个变量就可以运算的 ]
    
    3   算数运算符    先乘除取模 后加减
    
    4   关系运算符    > >= < <=
    
    5   相等运算符    == !=  ===  !==
    
    6   逻辑运算符    先&&  后  ||
    
    7   赋值运算符    =
    
    8   逗号运算符   ,
    
    //数字代表优先级 越小优先级越大

     

    练习题 1

    console.log(4 >= 6 || '' != '阿凡达' && !(12 * 2 == 144) && true);//true
    //           false || true && true && true
    //           false || true  最后结果是 true
    
    var num = 10;
    console.log(5 == num / 2 && (2 + 2 * num).toString() === '22');//true
    //              true && true  最后结果是 true

    练习题 2

    <script>
        var a = 3 > 5 && 2 < 7 && 3 == 4;
              //false && true && false
        console.log(a);//变量 a = false
        
        var b = 3 <= 4 || 3 > 1 || 3 != 2;
             // false || true || true
        console.log(b); //变量 b = true
        
        var c = 2 === "2";
        // false
        console.log(c);//变量c = false
        
        var d = !c || b && a;
        //true || true && false
        //true || false 最后变量d = true
        console.log(d);//true
    </script>
  • 相关阅读:
    Linux strace命令
    Xilinx实习一年总结
    Red Hat Linux 挂载外部资源
    4.6、Libgdx线程介绍
    Xshell中文乱码怎么处理?
    C++之指针指向二维数组
    POJ 2996 Help Me with the Game
    UVa 10377
    你们都满足下面的工作考核吗
    使用Python编写简单网络爬虫抓取视频下载资源
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14390671.html
Copyright © 2020-2023  润新知