zoukankan      html  css  js  c++  java
  • 运算优先级

    ###逻辑符的运算优先级表(根据优先级从大到小排列)
    ```
    优先级 运算类型 关联性 运算符
    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>

    ```
  • 相关阅读:
    笔记35 跨重定向请求传递数
    判断邮箱的正则表达式
    按钮
    async await 的用法
    笔记34 Spring MVC的高级技术——处理multipart形式的数据
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Unique Binary Search Trees,Unique Binary Search Trees II
    Validate Binary Search Tree
    Populating Next Right Pointers in Each Node,Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/zzzzzzzsy/p/6725819.html
Copyright © 2011-2022 走看看