js中的邏輯與(&&)和邏輯或(||)


之前有一個同事去面試,面試過程中碰到這樣一個問題:

在js中寫出如下的答案 :

var a = 2;

var b = 3;

var andflag = a && b ;

var orflag = a || b;

問andflag 和orflag 分別是什么?

起初我認為: andflag 和orflag 的值都為 true; 畢竟 && 和 || 都是求Boolean ,后來發現,我錯了。

答案應該是  andflag  = 3,orflag = 2;

原因是這樣的:

在運算過程中,首先js  會將 && 和||  兩邊的值轉成Boolean 類型,然后再算值 ,&&運算如果返回true,則取后面的值,如果|| 返回true,則取前面的值 , 而其中數值轉換成boolean 的規則 是:

對象、非零整數、非空字符串返回true,

其它為false   ;

a && b  的運算就是  :因為  a  和  b全是非零整數,所以  a  和  b  也就是true ,而   true && true  返回   true   ,則取后面的b   ,同理  a 和b 全是非零整數,a  和b  全是true  ,則true || true  返回   true ,取|| 前面的值 也就是2;

 

同樣:該邏輯運算符支持短路原則:

如 var  a = “”  ||  null  || 3  ||  4   —->    var a = fasel || false || true ||  true  結果為true  則返回第一個true,即是3

var b = 4 && 5 && null && 0   ——>   var b = true && true && false && false   結果是false   則返回第一個false   即是null .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM