巧用或、且运算符

对于&&和||运算符,相信大家都用过,分别进行逻辑与运算和逻辑或运算符。如果&&的第一个运算数是false,则不再考虑第二个运算数,直接返回false。如果||的第一个运算数是true,那么也不再考虑第二个运算数。

没有实践就没有发言权,demo如下:

1
2
3
4
5
6
7
8
var a = true, b = false;
function test(param){
  alert(param);
}
a && test(1);
b && test(2);
a || test(3);
b || test(4);

执行如上代码,事实上只执行了test(1)和test(4),原理如上所述。

a&&test(1)这种运算,其实我不知道是否有个专业的名词去描述它,在javascript森林群ToFishes同学称之为“惰性运算”,那么暂且叫它“惰性运算”吧,实际上相当于if(a){test(1)}。

其中||运算符,有个很重要的应用就是给function的参数设置默认值,如:

1
2
3
4
5
6
7
8
function test(param){
param = {
name: param.name || "zhenn",
age: param.age || 25
}

alert(param.name + " is " + param.age + " years old.")
}
test({});