1、逻辑与&&,只有两个操作数均为true,记过才返回true
true && true; //true
true && false; //false
false && true; //false
//正常使用中,不会直接比较两个布尔值,常用于if语句中
var a=1,b=2;
a==1 && b==2; //true, 如果a==1 并且 b==2时才返回true
a==1 && b==3; //false
短路原则:如果第一个值为假,第二个操作数将不会再运行
var a=1,b;
(a==1) && (b=2);//结果:2 ,第一个操作数为true,所以执行第二个操作数,b被赋值 a:1,b:2
var c=1,d;
c==2 && (d=3); //结果:false,第一个操作数为false,所以第二个操作数不执行,返回false,d未被赋值 c:1,d:undefined
//几个false值的短路
null && 'ac'; //null
undefined && 123; //undefined
0 && 123; //0
-0 && 12; //-0
NaN && 123; //NaN
"" && 123; //''
null,undefined,0,-0,NaN,""这六个值无论&&后面是什么都返回他们自己本身,因为这6个值转为Boolean均为false
2、逻辑或:||(只要有一个为真就为真,两个均为假结果才为假)
var a=1,b;
(a==1) || (b=2); //结果:true,a:1,b:undefined
如果逻辑与和逻辑非混合运用就相当于 三目运算符 的使用
null && '123' || 'abc'; //'abc'
true && '123' || 'abc'; //'123'
除了上面介绍的逻辑与,逻辑或,逻辑运算符还有一个叫逻辑非(!),次运算符为一元运算符,拥有最高运算级;除了上面几个逻辑运算还有一个特殊运算符,三目运算符 a ? b : c (如果a为true则则执行b表达式,否则执行c表达式)
几个运算符的优先级: 逻辑非 》 逻辑与 》逻辑或 》三目运算
null ? '123' : 'abc'; //'abc'
true ? '123' : 'abc'; //'123'
备注:本内容学习总结来源于喜马拉雅冰山工作室沙翼老师主讲的(陪你读书(JavaScript WEB前端))