逻辑运算符的使用技巧
逻辑或
Logical OR (||)语法
expr1 || expr2
返回expr1如果expr1为true;否则返回expr2。||会选择第一个(leftmost)为真的值作为结果,当找到一个真值的时候,后面的值不再计算,这叫做short-circuiting 。如果没有知道为真的值,则返回假,比如0||false
会返回false。
注意,如果都为假,则返回假。
逻辑或条件赋值更清晰
看一下如下代码,当members没有定义的时候,我们定为为数组,如果已经定义了,就直接跳过。这时候用||会更清晰
//define members
//var members;
//var members=[1,2,3];
members = members ? members : [ ];
members = members || [];
逻辑与
Logical AND (&&) 语法
expr1&&expr2
如果expert为假,则返回expr1,也就是假;否则,返回expr2。
&&会检查是否所有的值都为真,返回找到最右边的真值,或者第一个为假的值。如果找到一个为假的值,则直接返回它,比如"Cat" && NaN
返回NaN
。
注意,全部为真才为真。
逻辑AND的一个使用技巧
做一件事情需要满足很多条件的时候,可以用&&,比如进行一些权限管理。看看下面的代码,实际上是一种权限管理。
var tall = true;
var rich = true;
var handsome = true;
tall && rich && handsome && alert("可以学学写程序!");
JS的逻辑运算符和强类型语言有什么区别
下面这些情况在强类型语言中不可能出现:
"Cat" && NaN
返回NaN
"Cat" || "Dog"
返回"Cat"
强类型语言中只能返回真和假,因为类型已经指定为bool。看一下c语言
bool b = "Dog";
结果是编译不过。
注意:javascript是并没有编译的过程。