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

2022-05-05 19:21:06 字數 910 閱讀 9471

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

在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 .

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

結果為true時 取最後一項的值 結果為false時 去第乙個為false的值 結果為true時 取 第乙個為true的值 結果為false時 取最後一項的值 var aa 1 2 3 4 4 整個表示式為true 返回 最後一項 var bb 1 2 null undefined 4 null 整...

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

發布者 博主 在2014年9月13日 在js中寫出如下的答案 var a 2 var b 3 var andflag a b var orflag a b 問andflag 和orflag 分別是什麼?起初我認為 andflag 和orflag 的值都為 true 畢竟 和 都是求boolean 後...

深入理解JS中邏輯或( )和邏輯與( )

先來看乙個關於邏輯或的例子 var b 0 var a b b console.log b 2 var c b b console.log a 1 console.log c 3 console.log b 3關於 b和b 的區別,後 的運算等級沒有賦值運算子 高,這裡不再作過多的解釋,首先從全域性...