1. &&的理解
第一層:對兩個布爾值進行邏輯“與”操作;
第二次:對兩個可以轉化成布爾值的操作數進行邏輯“與”操作;
第三層:先計算左操作數,如果結果是假值,則返回這個假值,並不計算右操作數;否則計算右操作數,並將其作爲結果返回。
注:基於以上情況,以下兩個句子基本等價:
if(a == b) fn();
(a == b) && ( fn() );
2. || 的理解
與 && 相對應,只是在計算時,先計算做操作數,如果結果是真值,則返回這個真值,並不計算右操作數;否則計算右操作數,並將其作爲結果返回。
注:這種方法常用於給參數提供默認值,比如解決事件event對象兼容時,可以這樣:
dom.onclick = function(ev){
var oEvent = ev || event;
……
}
3. !
這個沒啥好說的,只是我們可以使用 !!a
取代 Boolean(a)
另外可以使用布爾代數對邏輯代數進行一些化簡、轉化等操作,如:
!(p && q) === !p || !q; // true
!(p || q) === !p && !q; // true