首頁 > 軟體

一文總結JS中邏輯運運算元的特點

2022-03-02 10:00:25

Js中的邏輯運運算元

JavaScript中有三個邏輯運運算元,&&與、||或、!非,雖然他們被稱為邏輯運運算元,但這些運運算元卻可以被應用於任意型別的值而不僅僅是布林值,他們的結果也同樣可以是任意型別。

描述

如果一個值可以被轉換為true,那麼這個值就是所謂的truthy,如果可以被轉換為false,那麼這個值就是所謂的falsy。會被轉換為false的表示式有: null、NaN、0、空字串、undefined。

儘管&&和||運運算元能夠使用非布林值的運算元,但它們依然可以被看作是布林操作符,因為它們的返回值總是能夠被轉換為布林值,如果要顯式地將它們的返回值或者表示式轉換為布林值,可以使用雙重非運運算元即!!或者Boolean建構函式。

  • &&: AND,邏輯與,expr1 && expr2,若expr1可轉換為true則返回expr2,否則返回expr1。
  • ||: OR,邏輯或,expr1 || expr2,若expr1可轉換為true則返回expr1,否則返回expr2。
  • !: NOT,邏輯非,!expr,若expr可轉換為true則返回false,否則返回true。

JS邏輯運運算元的特點

首先說一下,其他資料型別轉換為布林型別的規則: null、undefined、0、NaN、空字串轉換為false,其他轉化為 true。

1. 取反 !

首先把資料轉化為布林值,然後取反,結果為 true 或 false。

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(!"");   //true
console.log(!d);    //true
console.log(!a);    //false
console.log(!b);    //false
console.log(!obj);  //false
</script>

2. 邏輯與 &&

JavaScript 中邏輯與和其他語言不太一樣,如果第一個運算元是 true(或者能夠轉為 true),計算結果就是第二個運算元,如果第一個運算元是 false,結果就是 false(短路計算),對於一些特殊數值不遵循以上規則。(個人理解為:如果運算的第一個運算元為true,則返回第二個運算元,反之則返回第一個運算元)

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(true && 10);            //第一個運算元是true,結果是第二個操作,也就是10
console.log(false && b);            //第一個運算元是false,結果flase
console.log(100 && false);          //第一個運算元是100,結果flase
console.log(undefined && false);    //第一個運算元是undefined,結果undefined
console.log(NaN && false);          //第一個運算元是NaN,結果NaN
console.log(null && false);         //第一個運算元是null,結果null
console.log('' && false);           //第一個運算元是空串,結果空串
console.log(0 && 100);              //結果是0
console.log(5 && 100);              //100
console.log(a && b);                //hello
console.log(obj && 200);            //200
</script>

3. 邏輯或 ||

如果第一個運算元不是 false,結果就是第一個運算元,否則結果是第二個運算元。如果第一個運算元能夠轉為 true,結果就是第一個運算元(個人理解為:如果運算的第一個運算元為 true,則返回第一個運算元,反之則返回第二個運算元)

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(true || 10);        //第一個運算元是true,結果是第一個操作,也就是true
console.log(false || b);        //第一個運算元是false,結果是第二個運算元b
console.log(100 || false);      //第一個運算元是100,結果100
console.log(undefined || 9);    //第一個運算元是undefined轉false,結果9
console.log(NaN || false);      //第一個運算元是NaN轉false,結果第二個運算元
console.log(null || a);         //第一個運算元是null轉false,結果a
console.log('' || false);       //第一個運算元是空串轉false,結果第二運算元
console.log(0 || 100);          //結果是100
console.log(5 || 100);          //5
console.log(a || b);            //a
console.log(obj || 200);        //obj
</script>

總結 

到此這篇關於JS中邏輯運運算元特點的文章就介紹到這了,更多相關JS邏輯運運算元特點內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com