||
和&&
操作符
看到下面的式子,新人一定以為他們的值是true
或false
a || b c && d
布爾的運算豈非不是true
或false
?
1 && 2 && 3 && 4 && 5 //5
1 && 0 && 2 && 3 && 4 && 5 //0
1 && 0 && console.log(3) //0
&&
找第一個假值,假如沒有假值,返回末了一個真值
0 || undefined || 1 || null //1
0 || undefined || null //null
||
找第一個真值,假如沒有真值,返回末了一個假值
Boolean 內部不是簡樸的輸出true
或false
,由於除了5個falsy
值以外別的指對Boolean 來講都是true
,所以剛開始打仗的時刻會很疑惑。
邃曉了這些以後,能夠應用這個特徵做一些小技能
var a = 1 //不合格代碼
做項目時不知道前面有沒定義a
,如許寫的話很輕易除bug
所以在定義a
時能夠做一個推斷
var a = a || {} //假如前面有a,就用前面定義的a;假如前面沒有a,就用a = {}
等價於:
if(a){
a=a //假如a存在,就運轉a
}else{
a={} //假如a不存在,把a賦值為{}
}
等價於:
if(!window.a){ //寫成!a的話,假如a真的不存在,會報錯。
a = {}
}