||
和&&
操作符
看到下面的式子墓贿,新人肯定認為他們的值是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 內(nèi)部不是簡單的輸出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 = {}
}