逻辑符的运算优先级

逻辑符的运算优先级表(依据优先级从大到小分列)

优先级    运算范例    关联性    运算符
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、逻辑与 和 逻辑或 要在摆布双方的运算完成今后,在举行 逻辑与  和 逻辑或 比较。

这里是运算优先级的例子

    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('由于两个都不建立,所以这里面的不打印');
    }
    原文作者:折丹
    原文地址: https://segmentfault.com/a/1190000010017739
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞