先來看乙個關於邏輯或的例子:
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++的區別,後++的運算等級沒有賦值運算子(=)高, 這裡不再作過多的解釋,首先從全域性來看,關於的b的運算總共執行了4次,每次都自身+1,那麼按道理來說,如果這些運算都執行了,b的最後的值正常來說應該是4,那為什麼最後的結果是3呢?
①、首先如果第一項的值不是boolean值的話,會轉為boolean型別的,在數值上,0和-0在轉為boolean時為false,其餘為true,在其他值上諸如null,undefined,nan,空string型別等會轉為false,可以自己嘗試一下
console.log(boolean(nan)) // false
console.log(boolean(null)) // false
console.log(boolean(undefined)) // false
console.log(boolean('')) // false
console.log(boolean(' 0')) // true
②、如果第一項的值為true時,則後面一項則不執行,返回的是第一項執行運算後的值網上看到的是說如果第一項為true,返回的也是true,這是不對的說法。
③、如果第一項的值為false時,則執行後面一項的運算,返回的是第二項執行運算後的值再來看多乙個例子,自己多動手嘗試看看就明白了。
var b = 0
var a = (typeof b++) || b++
console.log(b) //1
var c = ++b || ++b
console.log(a) // number
console.log(c) // 2
console.log(b) // 2
-------------------------- 來個分割線 ----------------------------------
看乙個關於邏輯與的例子
var b = 0
var a = (typeof b++) && b++
console.log(b) // 2
var c = ++b && ++b
console.log(a) // 1
console.log(c) // 4
console.log(b) // 4
①、邏輯與和邏輯或一樣,都需要把前後兩項進行boolean轉換再比較②、如果第一項的值為true時,則執行後面一項的運算,返回的是第二項執行運算後的值
③、如果第一項的值為false時,則後面一項則不執行,返回的是第一項執行運算後的值
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...