逻辑运算又称布尔代数,就是布尔值的"算数"运算。
逻辑运算符包括:1,逻辑与(&&) 2,逻辑或( || ) 3,逻辑非( ! )
16.2.1 逻辑与运算
// 16.2.1 逻辑与运算
var user; //定义变量
(! user && console.log("没有赋值"));//返回提示信息
// 等效于
var userid;
if(! userid){
console.log("没有赋值01");
}
返回结果预览:
逻辑与运算.png
// 使用逻辑与运算符可以代替设计多重分支结构
var bb = 3;
(bb == 1) &&console.log(1);
(bb == 2) &&console.log(2);
(bb == 3) &&console.log(3);
(! bb) &&console.log("null");
// 上面的代码等效于下面的多重分支结构
var cc = 3;
switch(cc){
case 1:
console.log(1);
break;
case 2:
console.log(2);
break;
case 3:
console.log(3);
break;
default:
console.log("null");
}
返回预览:
逻辑与运算01.png
16.2.2 逻辑或运算
逻辑或运算(||):如果两个操作都为true,或者其中一个为true,否则返回false。逻辑或也是一种短路逻辑
// 针对下面四个表达式
var tvb = 3;
(tvb == 1) &&console.log(1);
(tvb == 2) &&console.log(2);
(tvb == 3) &&console.log(3);
(! tvb) &&console.log("null");
// 可以使用逻辑或对其进行合并
var tvb = 3;
(tvb == 1) &&console.log(1) ||
(tvb == 2) &&console.log(2) ||
(tvb == 3) &&console.log(3) ||
(! tvb) &&console.log("null");
逻辑或运算.png
由于&&运算符的优先级高于||运算符的优先级,所以不必使用小括号进行分组。如果使用小括号分组前后,代码更容易阅读
var bv = 5;
((bv == 1) &&console.log(1)) ||
((bv == 2) &&console.log(2)) ||
((bv == 3) &&console.log(3)) ||
((bv == 4) &&console.log(4)) ||
((bv == 5) &&console.log(5)) ||
((! bv) &&console.log("null"));
16.2.3 逻辑非运算
逻辑非运算(!)直接放在操作数之前,把操作数的值转换为布尔值,然后取反并返回。
// 下面列举特殊操作的逻辑非运算值
console.log( ! {}); //如果操作数是对象,则返回false
console.log(! 0); //如果操作数是0,则返回true
// 如果操作数是非0的任何数字,则返回false
console.log(! (s = 5));
// 如果操作数是null,则返回true
console.log(! null);
// 如果操作数是NaN,则返回true
console.log(! NaN);
// 如果操作数是Infinity,则返回false
console.log(! Infinity);
// 如果操作数是-Infinity,则返回false
console.log(! (-Infinity));
// 如果操作数是undefined,则返回true
console.log(! undefined);
逻辑非运算01.png
/*
如果对于操作数执行两个逻辑非运算操作,就相当于把操作数转换为布尔值
*/
console.log(!0);//返回true
console.log(!!0);//返回false
/*
注意:
逻辑与、逻辑或运算的返回值不必是布尔值,但是逻辑非运算的返回值一定是布尔值。
*/
JS逻辑运算基础学习.png
网友评论