JavaScript 逻辑与运算
■知识点
逻辑与运算(&&),只有两个操作数都为true时,才返回true,否则返回false。逻辑与是一种短路逻辑:如果左侧表达式为false,则直接短路返回结果,不再运算右侧表达式。运算逻辑如下。
第1步,计算第1个操作数(左侧表达式)的值。
第2步,检测第1个操作数的值。如果左侧表达式的值可以转换为false (null、underfilled、NaN、 0、""、false),那么就会结束运算,直接返回第1个操作数的值。停止后面的操作步骤。
第3步,如果第1个操作数可以转换为tme,则计算第2个操作数(右侧表达式)的值。
第4步,返回第2个操作数的值。
■实例设计
下面的代码利用逻辑与运算检测变量并进行初始化。
var user; //定义变量
( ! user &&console.log("没有赋值")); //返回提示信息“没有赋值”
等效于:
var user; //定义变量
if( ! user){ //条件判断
console.log("变量没有赋值");
}
注意:
如果变量usei•值为0或空字符串等假值,转换为布尔值时,则为false,那么当变量赋值之后,依然提示变量没有赋值。因此,在设计时必须确保逻辑与左侧的表达式返回值是一个可以预测的值。
var user = 0; //定义并初始化变蛩
( ! user &&console. log ("变量没有赋值")); //返回提示信息••变M没有赋值"
同时,注意右侧表达式不应该包含赋值、递增、递减和函数调用等有效运算,因为当左侧表达式为false时,则直接跳过右侧表达式,会给后面的运算带来潜在影响。
使用逻辑与运算符可以代替设计多重分支结构。
var n = 3;
(n == 1) &&console.log(1);
(n == 2) &&console.log(2);
(n == 3) &&console.log(3);
(! n) &&console.log("null");
上面的代码等效于下面多重分支结构:
var n = 3; //定义变量
switch (n){ //指定判断的变量
case 1 : //条件1
console.log(1);
break; //结束结构
case 2 : //条件2
console.log (2);
break; //结束结构
case 3 : //条件3
console.log(3);
break; //结束结构
default : //默认条件
console.log ("null");
}
点击加载更多评论>>