邏輯符的運算優先級

邏輯符的運算優先級表(根據優先級從大到小排列)

優先級    運算類型    關聯性    運算符
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    賦值    從右到左    … = …
… += …
… -= …
… *= …
… /= …
… %= …
… &= …
… ^= …
… |= …

總結:函數

一、賦值操做排在全部的比較最後,(num == 1)裏的內用最優先運算。
   二、成員訪問的優先級在,()運算以後,在其餘的運算以前。
   三、函數的執行,在其餘比較和運算符以前以前。
   四、判斷的優先級也在賦值 = 號的最前邊。
   五、邏輯與 和 邏輯或 要在左右兩邊的運算完成之後,在進行 邏輯與  和 邏輯或 比較。

這裏是運算優先級的例子

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('由於兩個都不成立,因此這裏面的不打印');
    }
相關文章
相關標籤/搜索