【JS】邏輯運算符 非! 與&& 或||


  JS中的邏輯運算符在處理布爾值的判斷時,和其他語言沒有什么不同,不過在處理對象時,就需要好好梳理記憶下了。

 

  邏輯非(!)


    如果一個操作數是一個對象,返回false;

    如果一個操作數是一個空字符串,返回false;

    如果一個操作數是一個非空字符串,返回false;

    如果一個操作數是一個數值0,返回true;

    如果一個操作數是任意的非零字符,返回false;

    如果一個操作數是null,返回true;

    如果一個操作數是NaN,返回true;

    如果一個操作數是undefined,返回true;

    ps: 其實這樣很容易就看出來其邏輯判斷的值了。

 

  邏輯與(&&) 


  (1)對於布爾值,邏輯與是非常簡單的,只要有一個false,就返回false;

  (2)對於不是布爾值的情況則:

          如果第一個操作數是對象,則返回第二個數

          如果第二個操作數是對象,則只有在第一個操作數的求值結果為true的情況下才會返回該對象;

          如果第兩個操作數都是對象,則返回第二個數操作數

          如果有一個操作數是null,則返回null

          如果有一個操作數是NaN,則返回第NaN

          如果第一個操作數是undefined,則返回undefined

  

  ps:其實仔細想一下,邏輯運算符操作對象遵循從左到右的順序來判斷,邏輯與操作符(&&)先判斷第一個數,如果第一個數的邏輯判斷是true,則還需判斷第二個數,結果輸出第二個操作數;同理,如果第一個數為false,則不用考慮第二個數了,直接輸出第一個數的邏輯判斷結果,這和其他語言原理都是一樣的。

 

  邏輯或(||)


  (1)對於布爾值,邏輯或是非常簡單的,只要有一個true,就返回true;

  (2)對於不是布爾值的情況則:

                 如果第一個操作數是對象,則返第一個操作數

                 如果第一個操作數的求值結果為false,則返回第二個操作數

                 如果兩個操作數都是對象,則返回第一個操作數

                 如果兩個操作數是null,則返回null

                 如果兩個操作數是NaN,則返回NaN

                 如果兩個操作數是undefined,則返回undefined 

 

  ps: 原理同邏輯與(&&),邏輯或(||)的判斷是如果第一個操作數的邏輯判斷為true,則直接輸出第一個操作數,不用再考慮第二個操作數;如果第一個操作數的邏輯判斷為false,則還得去判斷第二個操作數的邏輯。

 


免責聲明!

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



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