前幾天看到乙個函式,百思不得其解,今天早上醒來看了本js的書,正好講到操作符的用法,給大家分享下js中的&&,||,和我們用的其他的程式語言還是有點區別的。
直接上那個函式的**:
function當我們給mood賦值true其顯示"i like this"(a來代替) 賦值false 顯示"i dont like this"(b來代替),或者我們給mood 賦值個字串,其也會顯示 a,按理說應該返回true或者false,真是不明白,看了書才明白whatdoesitdo(mood)
邏輯與(&&)操作可以應用於任何的操作型別,不僅僅是布林值,在有乙個運算元不是布林值的情況下,&&操作符就不一定返回布林值:遵循下面規則:
以a&&b為例:
1如果第乙個運算元是物件則返回第二個運算元,如果a是物件就返回b,
2,如果第二個運算元是物件,則只有在 第乙個運算元求值為true的情況下才會返回該物件
&&操作屬於短路操作,只要第乙個運算元能夠決定結果就不再操作第二個運算元了,所以第乙個函式因為前面是個false,因為已經可以決定結果就是false,不再操作dd了,即使其未定義,第二個函式因為第乙個運算元是true不能決定結果,所以會繼續操作dd,發現dd未定義,這就會報錯,第三個函式,以為第乙個運算元是true也是個物件,所以遵照第一條,返回"dd"
3,如果兩個都是物件返回第二個
4,如果有乙個是null,則返回null
"dd"&&null 返回null;false&&null;返回false,因為第乙個已經決定結果,所以不再執行下乙個運算元
5,如果有乙個是nan,則返回nan
6,如果有乙個運算元為undefined就返回undefined
邏輯或(||)和邏輯與的操作相類似,只要有乙個不是布林值,||也不一定返回布林值,遵循下面規則:
1,如果是第乙個是物件就返回第乙個,下面我們就很容易理解開頭那個函式怎麼回事了,如果mood是乙個物件的話,首先&&操作返回「i like this」,然後進行||操作,因為(mood&&"iike this")是物件,所以再進行||,就返回mood&&"iike this",所以結果為"i like this".
2,如果第乙個求值的結果是false,則返回第二個運算元
啥都不說了自己看吧
3,如果兩個運算元都是物件,返回第乙個
4,如果都是null,nan,undefined,則返回null,nan,undefined;
對於a||b,如果a為true則不會操作b,如果a為false則會繼續操作b
對於null的操作,
var c=a||b,
如果a為null,則返回b,如果a不為null,直接返回a,b起到乙個後備的作用;
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中的邏輯與( )和邏輯或( )
之前有乙個同事去面試,面試過程中碰到這樣乙個問題 在js中寫出如下的答案 var a 2 var b 3 var andflag a b var orflag a b 問andflag 和orflag 分別是什麼?起初我認為 andflag 和orflag 的值都為 true 畢竟 和 都是求boo...