之前有乙個同事去面試,面試過程中碰到這樣乙個問題:
在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 的區別,後 的運算等級沒有賦值運算子 高,這裡不再作過多的解釋,首先從全域性...