javascript中邏輯與和邏輯非以及賦值表達式的淺析

一 &&

首先說下邏輯與&&,說起來慚愧,用了好多年邏輯與只是知道條件表達式中使用它,無非是將兩個true或者false的條件做下判斷而已。

第一層關係,最簡單的true和false的判斷使用

例如

var isActive = true;
var isManager = true;
if(isActive && isManager) {
    console.log('user is Manager');
}

第二種關係,判斷兩個條件的真假值,這裏的真值並不僅僅指true,類似的數字1,2,3,非空對象,非空字符串等都屬於真值;同理假值也並非只是false,類似數字0,空對象,未定義的變量等都是空值

例如

var obj = {x:0};
var name = "tom";
if(obj && name) {
    console.log('name is ' + name);
}

例子中obj雖然不是true,但在這裏會自動判斷不是空對象就算是真值,同理name變量不是非空字符串也算是真值

第三層關係,需要深究一下,邏輯與的計算邏輯,兩個條件表達式,按照從左到右的順序,首先計算左邊的表達式,如果爲假值,那麼放棄計算右側的表達式;如果左邊的表達式爲真值,則繼續計算右側的表達式;按照這個邏輯,出現了稍微有些迷惑的寫法

var min = 0;
var max = 100;
var value = 40;
if(max > value) open(); // 只有max大於value時,執行函數open
(max > value) && open(); // 同上,如果左側表達式max大於value爲真值,那麼執行open函數,否則不執行

var ret = max && value; // 最後ret值爲40
var ret = min && value; // 最後ret值爲0

邏輯與的返回值很有意思,它會返回最後一個條件爲真的值,max&&value,因爲max爲真值,然後計算value值也爲真值,那就返回value的值;

第二個表達式,min爲0是假值,那麼就放棄計算value的值,直接返回min的值0

在很多代碼裏會看到上述寫法,不管是寫代碼的人炫技也好,還是真的有先進性也罷,我們看到一定要知道這句話是要表達什麼意思。

二 ||

邏輯非的話同邏輯與基本差不多,不同也就在於只要滿足一個條件就可以了,左側表達式如果爲真值,那麼就會放棄計算右側表達式

三 賦值表達式=

賦值表達式其實很簡單,就是把右側表達式的值賦給左側的變量或者對象

這裏有個非常有意思的點在於,賦值表達式的返回值爲左側表達式的內容,也就是說,最後返回值=右側變量獲取的內容=左側表達式的內容

var value = (max = 200);

上面的例子中,max值爲200,而value同樣爲200

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章