C++邏輯操做符 與 &&

邏輯與操做符(&&)



var result = true && false;spa


真值表:對象

邏輯與操做符能夠應用於任何類型的操做數,而不單單是布爾值。在有一個操做數不是布爾值的狀況下,邏輯與操做就不必定返回布爾值;此時,他遵循下列規則:變量

1.若是第一個操做數是對象,則返回第二個操做數;im

2.若是第二個操做數是對象,則只有在第一個操做數的求值結果是true的狀況下才會返回該對象;img

3.若是兩個操做數都是對象,則返回第二個操做數;錯誤

4.若是一個操做數是null,則返回null;ab

5.若是有一個操做數是NAN,則返回NAN;undefined

6.若是有一個操做數是undefined,則返回undefined。


邏輯與操做屬於短路操做,即若是第一個數可以決定結果,那麼就不會再對第二個操做數求值。對於邏輯與而言,若是第一個操做數是false,則不管第二個操做數是什麼值,結果都再也不多是true了。


看例子:

var found = true;

var result = ( found && someUndefinedVariable );       //這裏會發生錯誤

alert( result );                                                                    //這一行不會執行

在上面的代碼中,當執行邏輯與操做時會發生錯誤,由於變量someUndefinedVariable沒有聲明。因爲變量found的值是true,因此邏輯與操做符會繼續對變量someUndefinedVariable求值。但someUndefinedVariable還沒有定義,所以就會致使錯誤。這說明不能在邏輯與操做中是要未定義的值。若是像下面這個例子中同樣,講found的值設置爲false,就不會發生錯誤了。

var found = false;

var result = ( found && someUndefinedVariable );       //不會發生錯誤

alert( result );                                                                    //會執行("false")

在這個例子中,警告框會顯示出來。不管變量someUndefinedVariable有沒有定義,也永遠不會對他求值,由於第一個操做數的值是false。而這也就意味着邏輯與操做的結果一定是false,根本用不着再對&&右側的操做數求值了。

相關文章
相關標籤/搜索