邏輯運算符的短路運算


1. 邏輯運算符 && || !

短路運算

如果參與邏輯運算的表達式,第一個式子就能決定整個邏輯表達式的結果,那么就不會去算第二個式子的值,這個就是短路運算。

     var num1 = 10;
     var num2 = 20;
     var res = num1 < 0  &&  num2++ > 0;
     console.log(res); //false
     console.log(num2); //20
        //num1 < 0 已經為false,所以不執行后面的
     var num1 = 10;
     var num2 = 20;
     var res2 = num1 > 0 || ++num2 > 0;
     console.log(res2); //true
     console.log(num2); //20
        //num1 > 0 已經為true,所以不執行后面的

2.邏輯表達式的結果,不一定都是true或者false,有可能是其他的值。

     var num1 = 10;
     var num2 = 20;
     var res = num1 && num2++ > 0;
     console.log(res);  // true
     console.log(num2); // 21

2.1 邏輯與表達式

找假,如果第一個式子能夠轉換成布爾類型的false的話, 那么整個邏輯與表達式的結果就是第一個式子的值;如果第一個式子不能轉換成布爾類型的false的話,那么整個邏輯與表達式的結果就是第二個式子的值,不管第二個式子是什么。

    var num = 10;
    var res = undefined && ++num;
    console.log(res); //undefinef
    console.log(num); //10

    var num = 10;
    var res = 200 && ++num;
    console.log(res); //11
    console.log(num); //11

2.2 邏輯或表達式

找真,如果參與邏輯或運算的第一個表達式能夠轉換成布爾類型的true的話,那么這整個邏輯或表達式的結果就是第一個式子的值;

    var num =10;
    var res = 200 || num++ >0;
    console.log(res); //200
    console.log(num); //10
    //如果第一個式子不能轉換布爾類型的true的話,那么整個邏輯或表達式的結果就是第二個式子的值,不管第二個式子是什么。
    var num =10;
    var res = undefined || num++;
    console.log(res); //10
    console.log(num); //11


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM