您好,登錄后才能下訂單哦!
本篇內容介紹了“javascript的邏輯運算符有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
javascript的邏輯運算符有:1、邏輯與“&&”,只有兩個操作數都為true時,才返回true;2、邏輯或“||”,如果兩個操作數都為true,或其中一個為true,就返回true;3、邏輯非“!”,把操作數的值轉換為布爾值,并取反。
本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
邏輯運算符通常用來組合多個表達式,邏輯運算符的運算結果是一個布爾值,只能有兩種結果,不是 true 就是 false。下表中列舉了 JavaScript 中支持的邏輯運算符:
運算符 | 名稱 | 示例 |
---|---|---|
&& | 邏輯與 | x && y 表示如果 x 和 y 都為真,則為真 |
|| | 邏輯或 | x || y 表示如果 x 或 y 有一個為真,則為真 |
! | 邏輯非 | !x 表示如果 x 不為真,則為真 |
邏輯與運算
邏輯與運算(&&
)是 AND 布爾操作。只有兩個操作數都為 true 時,才返回 true,否則返回 false。具體描述如表所示。
第一個操作數 | 第二個操作數 | 運算結果 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
邏輯與是一種短路邏輯,如果左側表達式為 false,則直接短路返回結果,不再運算右側表達式。運算邏輯如下:
第 1 步:計算第一個操作數(左側表達式)的值。
第 2 步:檢測第一個操作數的值。如果左側表達式的值可轉換為 false(如 null、undefined、NaN、0、""、false),那么就會結束運算,直接返回第一個操作數的值。
第 3 步:如果第一個操作數可以轉換為 true,則計算第二個操作數(右側表達式)的值。
第 4 步:返回第二個操作數的值。
示例1
下面代碼利用邏輯與運算檢測變量并進行初始化。
var user; //定義變量 (! user && console.log("沒有賦值")); //返回提示信息“沒有賦值”
等效于:
var user; //定義變量 if (! user){ //條件判斷 console.log("變量沒有賦值"); }
如果變量 user 的值為 0 或空字符串等假值轉換為布爾值時,則為 false,那么當變量賦值之后,依然提示變量沒有賦值。因此,在設計時必須確保邏輯與左側的表達式返回值是一個可以預測的值。
var user = 0; //定義并初始化變量 (! user && console.log("變量沒有賦值")); //返回提示信息“變量沒有賦值”
右側表達式不應該包含賦值、遞增、遞減和函數調用等有效運算,因為當左側表達式為 false 時,則直接跳過右側表達式,會給后面的運算帶來潛在影響。
邏輯或運算
邏輯或運算||
是布爾 OR 操作。如果兩個操作數都為 true,或者其中一個為 true,就返回 true,否則就返回 false。具體如圖所示。
第一個操作數 | 第二個操作數 | 運算結果 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
邏輯或也是一種短路邏輯,如果左側表達式為 true,則直接短路返回結果,不再運算右側表達式。運算邏輯如下:
第 1 步:計算第一個操作數(左側表達式)的值。
第 2 步:檢測第一個操作數的值。如果左側表達式的值可轉換為 true,那么就會結束運算,直接返回第一個操作數的值。
第 3 步:如果第一個操作數可以轉換為 false,則計算第二個操作數(右側表達式)的值。
第 4 步:返回第二個操作數的值。
示例2
針對下面 4 個表達式:
var n = 3; (n == 1) && console.log(1); (n == 2) && console.log(2); (n == 3) && console.log(3); ( ! n ) && console.log("null");
可以使用邏輯或對其進行合并:
var n = 3; (n == 1) && console.log(1) || (n == 2) && console.log(2) || (n == 3) && console.log(3) || ( ! n ) && console.log("null");
由于&&運算符的優先級高于||運算符的優先級,所以不必使用小括號進行分組。不過使用小括號分組后,代碼更容易閱讀。
var n = 3; ((n == 1) && console.log(1)) || ((n == 2) && console.log(2)) || ((n == 3) && console.log(3)) || (( ! n ) && console.log("null")) ||
邏輯與和邏輯或運算符具有以下 2 個特點:
在邏輯運算過程中,臨時把操作數轉換為布爾值,然后根據布爾值決定下一步的操作,但是不會影響操作數的類型和最后返回結果。
受控于第一個操作數,可能不會執行第二個操作數。
邏輯非運算
邏輯非運算!
是布爾取反操作(NOT)。作為一元運算符,直接放在操作數之前,把操作數的值轉換為布爾值,然后取反并返回。
示例3
下面列舉一些特殊操作數的邏輯非運算返回值。
console.log( ! {} ); //如果操作數是對象,則返回false console.log( ! 0 ); //如果操作數是0,則返回true console.log( ! (n = 5)); //如果操作數是非零的任何數字,則返回false console.log( ! null ); //如果操作數是null,則返回true console.log( ! NaN ); //如果操作數是NaN,則返回true console.log( ! Infinity ); //如果操作數是Infinity,則返回false console.log( ! ( - Infinity )); //如果操作數是-Infinity,則返回false console.log( ! undefined ); //如果操作數是undefined,則返回true
示例4
如果對操作數執行兩次邏輯非運算操作,就相當于把操作數轉換為布爾值。
console.log( ! 0 ); //返回true console.log( ! ! 0 ); //返回false
邏輯與和邏輯或運算的返回值不必是布爾值,但是邏輯非運算的返回值一定是布爾值。
“javascript的邏輯運算符有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。