• 运算优先级


    ###逻辑符的运算优先级表(根据优先级从大到小排列)
    ```
    优先级 运算类型 关联性 运算符
    19 圆括号 n/a ( … )
    18 成员访问 从左到右 … . …
    需计算的成员访问 从左到右 … [ … ]
    new (带参数列表) n/a new … ( … )
    17 函数调用 从左到右 … ( … )
    new (无参数列表) 从右到左 new …
    15 逻辑非 从右到左 ! …
    一元加法 从右到左 + …
    一元减法 从右到左 - …
    前置递增 从右到左 ++ …
    前置递减 从右到左 -- …
    typeof 从右到左 typeof …
    void 从右到左 void …
    delete 从右到左 delete …
    14 乘法 从左到右 … * …
    除法 从左到右 … / …
    取模 从左到右 … % …
    13 加法 从左到右 … + …
    减法 从左到右 … - …
    12 按位左移 从左到右 … << …

    11 小于 从左到右 … < …
    小于等于 从左到右 … <= …
    大于 从左到右 … > …
    大于等于 从左到右 … >= …
    in 从左到右 … in …
    instanceof 从左到右 … instanceof …
    10 等号 从左到右 … == …
    非等号 从左到右 … != …
    全等号 从左到右 … === …
    非全等号 从左到右 … !== …
    9 按位与 从左到右 … & …
    8 按位异或 从左到右 … ^ …
    7 按位或 从左到右 … | …
    6 逻辑与 从左到右 … && …
    5 逻辑或 从左到右 … || …
    4 条件运算符 从右到左 … ? … : …
    3 赋值 从右到左 … = …
    … += …
    … -= …
    … *= …
    … /= …
    … %= …
    … &= …
    … ^= …
    … |= …
    ```
    >总结:1、赋值操作排在所有的比较最后,(num == 1)里的内用最优先运算。
    2、成员访问的优先级在,()运算之后,在其他的运算之前。
    3、函数的执行,在其他比较和运算符之前之前。
    4、判断的优先级也在赋值 = 号的最前边。
    5、逻辑与 和 逻辑或 要在左右两边的运算完成以后,在进行 逻辑与 和 逻辑或 比较。


    ### 这里是运算优先级的例子
    ```
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>

    </body>
    </html>
    <script type="text/javascript">

    var obj = 1==1;
    // console.log(obj);
    var obj2 = 1>2;
    var obj3 = 3*2;
    var obj4 = !1 == 0; // 先运算 !1(1的取反),然后再和 == 0 ,进行比较,把比较的结果值赋给obj4

    // 特殊例子
    var i = 0;
    var obj5 = ++i; // 前置型递增,就是将i的值i本身再进行相加,然后再赋值给obj5
    var obj6 = i++;// 后置型递增,就是将i的值先赋值给obj5,然后i本身再进行相加
    console.log(obj6);

    // 函数运算的优先级
    var objOne = {
    name: 'zhaoxuan',
    method:(function () {
    return function () {
    this.method = 1;
    return 'fn是一个字符串'
    }
    })()
    };
    // 函数运算执行的优先级,在赋值之前,先进行自执行函数运算,然后再把自执行函数运算的返回值,赋值给obj.method属性。
    var fn = objOne.method();
    console.log(fn);
    // 这里也是,objOne.method();函数的运算优先,先将函数进行运算,然后再把返回值给fn,fn现在的值就是字符串‘fn是一个字符串’


    // 逻辑与 和 逻辑或
    // 逻辑与 比 逻辑或的优先级高。
    console.log(1 && 2 || 0);
    // 先进行 1&&2 运算,然后拿 1&&2的运算结果 2和0进行逻辑或运算 ,也就是(2 || 0)。
    console.log(1 && true || 0);// true
    console.log(1 && 0 || 3 && 1 && true);

    // 逻辑与,两个条件都成立,返回结果才是true
    var num1 = 2;
    var num2 = true;
    if (num1 && num2) {
    console.log('这才是成立的');
    }
    var num3 = false;
    if (num1 && num3) {
    console.log('这是不成立的,所以不打印');
    }

    // true && false,第一个ture成立则返回第二个,如果,第一个不成立 false&&false,则直接返回第一个
    console.log(false && true);

    // 逻辑或 两个或者多个条件其中一个成立,则返回成立true
    if( 1==1 || 2==0) {
    console.log('这种或就成立的,因为1==1成立了');
    }
    // 如果两个都不成立,则就返回false
    if( 1==3 || 2== 3) {
    console.log('因为两个都不成立,所以这里面的不打印');
    }


    </script>

    ```
  • 相关阅读:
    android权限大全
    Java反射经典实例
    SD卡的寄存器 SD总线协议 CRC算法
    ARM CortexM3 操作模式和特权级别
    使用 Printf via SWO/SWV 输出调试信息
    embOS实时操作系统 概览
    embOS实时操作系统 多任务调度
    android wifi hotspot
    Eclipse Java 智能提示
    ARM CortexM3 概览
  • 原文地址:https://www.cnblogs.com/zzzzzzzsy/p/6725819.html
Copyright © 2020-2023  润新知