一、
声明变量a
a = 1 || 100;
a = 0 || 100;
1、上述代码在JavaScript(弱类型的解释型语言)中,结果如下:
a = 1 || 100; //1
a = 0 || 100; //100
2、上述代码在C、Java等(强类型编译型语言)中,结果如下:
a = 1 || 100; //1
a = 0 || 100; //0
以 a = b || c为例:
在JavaScript中,如果b不为0、undefined、null、false,则a = b,“||”后面的不执行
如果b为0、undefined、null、false,则a = c
在强类型语言中:”b || c“是一个表达式,只会返回true或者false,然后再赋给a
二、
申明变量a
a = 0 && 100;
a = 1 && 100;
a = 2 && 100;
在JS中,结果为0、100、100
在JAVA、C中,结果为0,、1、1
以a = b && c为例:
在js中,如果b为0、undefined、null、false,则a = b,“&&”后面的不执行
如果b不为0、undefined、null、false,则a = c
在强类型语言中:返回表达式b && c的结果,true或者false
根据以上的特性,可以写一些非常简洁的JS语句。
1、下面是函数的缺省参数写法,如果没有传参,则num等于100.
function f(num)
{
num = num || 100;
alert(num)
}
2、如果func1返回false,则执行func2,a等于func2的返回值,如果返回true则不执行func2.
a = func1() || func2();
3、如果func1返回false,则不执行func2,如果返回true则执行func2,a等于func2的返回值。
a = func1() && func2();
4、a = func1() || b等等
根据自己的需要,编排变量以及函数到"||"、"&&"表达式中,可以省去很多繁琐的判断语句与大括号。