1. 程式人生 > >JavaScript中的&&與&與,||或|或詳解

JavaScript中的&&與&與,||或|或詳解

在我們先前的使用過程中,我們很多時候都是遇到的是把他們放在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,無論“&&”後面是

true還是false,結果都將返“&&”後面的值;
只要“||”前面為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