||
和&&
操作符
看到下面的式子,新人肯定认为他们的值是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 = {}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。