||&&操作符

看到下面的式子,新人肯定认为他们的值是truefalse

a || b   c && d

布尔的运算难道不是truefalse

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 内部不是简单的输出truefalse,因为除了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 = {}
}

uccs
756 声望88 粉丝

3年 gis 开发,wx:ttxbg210604