javascript-深入理解&&和||

來源:互聯網
上載者:User

標籤:轉換   計算   math   --   決定   為什麼   code   ima   nan   

先從兩個問題看起:

第一個問題 為什麼 a && b 返回的是true,b && a 返回的是6

1 var user = 6;2 var both = true;3 4 console.log( user && both);    //true5 console.log( both && user);    //6

 

第二個問題 both進行自減  最後列印的依舊是3

1 var user = false;2 var both = 3;3 4 console.log( user && both--);    // false5 console.log(both);   // 3

 

 

先從三個層次來理解(以&&為例說明):

第一層理解:運算元都是布爾值的時候,只有二者都為true的時候,結果才為true,否則為false。

第二層理解:&&可以對真值和假值進行運算,如果兩個都是真值,則返回一個真值,否則返回一個假值。但是,真值並不僅限於true,假值也並不僅限於false,下面這些值會被轉換成false(其他所有值都為true)

undefined

null

0/-0

NaN

" "

在js中,進行&&操作,結果並不總是true和false,而是當前的值。當前的值有可能就是數值、字串等。

如果第一個運算式為真,那麼就以第二個運算式的值作為其結果,這個結果不是轉換之後的值,而是它本身。

如果第一個運算式為假,那麼就以第一個運算式的值作為其結果,這個結果不是轉換之後的值,而是它本身。

  //上面第一個問題

1 var user = 6;2 var both = true;3 var math = 0;4 console.log( user && both); //true5 console.log( both && user); //66 console.log( both && math); //07 console.log( math && both); //0

 

第三層理解:短路運算,運算過程,首先計算左運算元的值,如果計算結果為假值,則整個運算式結果就為假值,也就是左運算元的值 同時停止右運算元的求值。如果左運算元的結果為真值,則整個結果依賴於右運算元的值。

關於短路運算的說明:

在&&和||運算時,如果第一個運算式的值就已經能夠確定整個運算的結果,那麼第二個運算式將不會執行

對於&&操作而言 第一個運算式的值為假值 那就決定了整個運算結果為假值 所以第一個運算式不會執行 所以y-- 並沒有執行 y的值仍是3

  //上面第二個問題

1 var x = false;2 var y = 3;3 console.log(x && y--); // false4 console.log(y); // 3


對於||而言,

如果第一個運算式的值為真值,結果就是第一個運算式的值,不是轉換之後的,而是它本身。

如果第一個運算式的值為假值,結果就是第二個運算式的值,不是轉換之後的,而是它本身。

 
1 var user = true;2 var both = 10;3 4 console.log(user || ++both);  //true5 console.log(both);   //10

 

&& 與 || 具有完全相同的原理,只是運算規則不太一樣。

1 var a = 10;2 var b = true;3 var c = 0;4 5 console.log(a || b);    //106 console.log(b || a);    //true7 8 console.log(b || c);    //true9 console.log(c || b);    //true

 

 

javascript-深入理解&&和||

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.