邏輯運算符 && || ! 的一些理解

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
發佈了12 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章