邏輯與&& 和邏輯或

&&的優先級比||的優先級高ui

邏輯與

tip1:邏輯與操做能夠應用於任何類型的操做數,在有一個操做數不是布爾值時,不必定返回Boolean值,大概的規則以下:code

一、第一個操做數是對象,則返回第二個操做數;對象

二、第二個操做數爲對象時,則只有在第一個操做數的求值結果爲true時才返回該對象ip

三、若是兩個操做數都是對象,則返回第二個操做數;console

四、第一個操做數爲null時,則返回null;co

五、第一個操做數爲NaN時,則返回NaN;undefined

六、第一個操做數爲undefined時,則返回undefined;

tip:若是第一個操做數求值結果爲false,後面的操做數都不會去判斷執行,無論第二個操做數爲何值,最終結果都不會是true

tip:返回第二個操做數(大多數狀況下)

見代碼,大概舉一個例子驗證下:

var obj={
            "name":"zhan",
            "age":25
        }
        var obj1={
            "name":"hui",
            "age":25
        }
        var boolean_0=false;
        var boolean_1=true;
        var null_=null;
        var isNan=NaN;
        var str='zhan'
        var undefined_=undefined;
        var num_0=0;
        var num_1=1;
        console.log(obj&&boolean_1)//true
        console.log(obj&&boolean_0)//false
        console.log(obj&&null_)//null
        console.log(obj&&isNan)//NaN
        console.log(obj&&str)//'zhan'
        console.log(obj&&undefined_)//undefined
        console.log(obj&&obj1)//obj1
        console.log(obj&&num_0)//0
        console.log(obj&&num_1)//1

        console.log(null_&&num_1)//null
        console.log(isNan&&num_1)//NaN
        console.log(undefined_&&num_1)//undefined

邏輯或

tip:返回第一個操做數(大多數狀況下) 一、第一個操做數爲對象,則返回第一個操做數;

二、第一個操做數的求值結果爲false,則返回第二個操做數;

三、兩個都是對象,則返回第一個操做數;

四、兩個操做數都是null,則返回null;

五、兩個操做數都是NaN,則返回NaN;

六、兩個操做數都是undefined,則返回undefined;

見例子:

console.log(obj||boolean_1)//obj
        console.log(obj||boolean_0)//obj
        console.log(obj||null_)//obj
        console.log(obj||isNan)//obj
        console.log(obj||str)//obj
        console.log(obj||undefined_)//obj
        console.log(obj||obj1)//obj
        console.log(obj||num_0)//obj
        console.log(obj||num_1)//obj

        console.log(null_||null_)//null
        console.log(isNan||isNan)//NaN
        console.log(undefined_||undefined_)//undefined
相關文章
相關標籤/搜索