JavaScript基礎:邏輯運算符——&&和||(短路判斷)和!


一、&&:所有條件都為true,返回true;只要有一個是false,返回false;不一定返回boolean類型值

1、可以操作任意類型的數據,不只是布爾型;(除了null、undefined、NaN不會隱式轉換)

var a = 33,b=55,c=88

console.log(a<b&&b<c);//返回true

如果在有一個操作數不是布爾值得情況下,邏輯與就不一定返回布爾值,此時它遵循下列規則

  • 如果前面操作數隱式類型轉換后為true,則返回最后一個操作數:

          console.log(77&&33);//返回33

          console.log(true&&9&&"您好");//返回“您好”

          console.log(80 && true );//返回true

  • 如果前面有一個隱式轉換后不是true,則返回第一個隱式轉換為false的值(即短路的值)

          console.log(“”&&true);//返回空格

          console.log(44&&0&&"hello");//返回0

          console.log(55&&false&&0);//返回false

          console.log(0&&null&&55);//返回0

          console.log(NaN && 16 && "");//返回NaN

          console.log("" && NaN && 12);//返回“”空字符串

2、返回值不一定是boolean類型。null,返回null;undefined,返回undefined;NaN,返回NaN

          console.log(55*“abc”&&true);//返回NaN

          console.log(null&&true);//返回null

          console.log(undefined&&true);//返回undefined

          console.log(undefined&&null&&9&&NaN);//返回undefined

 

二、||:只要一個條件為true,則返回true;都為false,則返回false

1、可以操作任意類型的數據,不只是布爾型;

2、返回值不一定是boolean類型。

(有一個為true,則返回true,后面就被短路啦;都為false,一直走到最后一個,打印左后一個)

          console.log(33<22||33>11);//返回true

          console.log(undefined || null || 0);//返回0

          console.log(undefined || 88 || 99 );//返回88

          console.lof(undefined || 33>10 || false);//返回true 

          console.log(null || undefined || NaN);//返回NaN

          console.log(NaN || undefined) ;//返回undefined

          console.log("hellow" || NaN);//返回hellow

 

三、!(邏輯非):返回值一定是boolean值

 

1、可以操作任意類型的數據,返回值一定是boolean值;

2、!!同事使用兩個邏輯非操作符時——兩次求反,為本來代表的boolean值

          console.log(!false);//true

          console.log(!88);//false

          console.log(!NaN);//true

          console.log(!!NaN);//false

          console.log(!!"hell");//true


免責聲明!

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



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