JavaScript中的&&與&與,||或|或詳解
阿新 • • 發佈:2019-02-18
在我們先前的使用過程中,我們很多時候都是遇到的是把他們放在if()等判斷語句中,直接判斷結果是否為真或者假。
比如if(true&&false)判斷為假,當然我們用的時候是各種表示式。
關於&&,&,||,|先進行一下說明
&&:邏輯與,判斷邏輯結果是否為真,第一個條件為假,不再判斷第二個條件 &:按位與,屬於數值運算,比如1&2=0,二進位制按位與操作01和10結果為00 ||:邏輯或,判斷邏輯結果是否為真,第一個條件為真,不再判斷第二個條件 |:按位或,屬於數值運算,比如1|2=3,二進位制按位或操作01和10結果為11
&&、||補充說明
這樣是不夠的,按位操作我們知道是按照二進位制進行操作,得到結果。
邏輯與、邏輯或操作可以應用於任何型別的運算元,而不僅僅是布林值。在有一個運算元不是布林值的情況
下,邏輯與操作就不一定返回布林值。
那麼邏輯與、邏輯或的結果是什麼呢?
舉個例子
alert(1&&2) alert(0||1)
結果是什麼?懵逼嗎?
規則如下:
只要“&&”前面是false,無論“&&”後面是true還是false,結果都將返“&&”前面的值;
只要“&&”前面是true,無論“&&”後面是
只要“||”前面為false,不管“||”後面是true還是false,都返回“||”後面的值。
只要“||”前面為true,不管“||”後面是true還是false,都返回“||”前面的值。
再詳細一點的規則如下(出自JavaScript高階程式設計)
邏輯與
邏輯或
出個題感受一下
var a = 1 && 2 && 3;//3 var b = 0 && 1 && 2;//0 var c = 1 && 0 && 2;//0 var a = 0 || 1 || 2;//1 var b = 1 || 0 || 3;//1
補充說明
優先順序問題
運算子 |
描述 |
. [] () |
欄位訪問、陣列下標、函式呼叫以及表示式分組 |
++ -- - ~ ! delete new typeof void |
一元運算子、返回資料型別、物件建立、未定義值 |
* / % |
乘法、除法、取模 |
+ - + |
加法、減法、字串連線 |
<< >> >>> |
移位 |
< <= > >= instanceof |
小於、小於等於、大於、大於等於、instanceof |
== != === !== |
等於、不等於、嚴格相等、非嚴格相等 |
& |
按位與 |
^ |
按位異或 |
| |
按位或 |
&& |
邏輯與 |
|| |
邏輯或 |
?: |
條件 |
= oP= |
賦值、運算賦值 |
, |
多重求值 |
優先順序依次降低,簡而言之,&>|>&&>||
出個題感受一下
var a = 3 && 0 || 2; //2
var b = 3 || 0 && 2; // 3
var c = 0 || 2 && 3; // 3