&&邏輯與和||邏輯或,它們既能夠返回一個布爾值,又能夠返回指定操做數的值,這個值是非布爾型的。api
首先,咱們明確一下基礎知識。測試
可以轉換爲false的表達式有:spa
null
;NaN
;0
;""
);undefined
控制檯測試代碼:3d
同時,要注意,空數組轉換爲布爾值,是true哦。code
那麼接下來,咱們看它們的運算規則,邏輯表達式是從左往右計算,它們都是短路運算的操做符。短路運算的原理:當有多個表達式時,左邊的表達式值能夠肯定結果時,就再也不繼續運算右邊的表達式的值。以下:blog
false && (anything)
短路計算的結果爲假。true || (anything)
短路計算的結果爲真。邏輯與&&運算符的示例:ip
最後一個示例,若是第一個值是false,那麼直接返回false。字符串
邏輯或||運算符的示例:get
最後一個示例,若是第一個值是true,那麼直接返回true。
基本的布爾操做完了以後,咱們來看一看&&和||的進階用法。這基於它們能作非布爾型操做數的運算。
邏輯與&&示例
第一個操做數轉換後的邏輯值爲true,那麼返回第二個操做數的值。若是第一個操做數轉換後的邏輯值爲False,當前直接返回第一個操做數。
若是有多個操做數呢,固然是從左到右一個一個計算。
邏輯或||示例
若是第一個操做數的邏輯值爲true,那麼返回第一個操做數。若是第一個操做數的邏輯值爲False,那麼返回第二個操做數
。