js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。
当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下:
1.&&
1.1两边条件都为true时,结果才为true;
1.2如果有一个为false,结果就为false;
1.3当第一个条件为false时,就不再判断后面的条件
注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。
2.||
2.1只要有一个条件为true时,结果就为true;
2.2当两个条件都为false时,结果才为false;
2.3当一个条件为true时,后面的条件不再判断
注意:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值;
3.!
3.1当条件为false时,结果为true;反之亦然。
补充:逻辑与的优先级是高于逻辑或的;
比如console.log(3||2&&5||0),会先算2&&5的值为5,然后再3||5----3,最后再3||0----3,所以最终结果为3.
补充
表达式a && 表达式b : 计算表达式a(也可以是函数)的运算结果, 如果为 True,执行表达式b(或函数),并返回b的结果; 如果为 False,返回a的结果;
表达式a || 表达式b : 计算表达式a(也可以是函数)的运算结果, 如果为 Fasle,执行表达式b(或函数),并返回b的结果; 如果为 True,返回a的结果;
对于需要返回Boolean类型数值的地方,比如if判断,逻辑运算符,js对象会默认转换为Boolean类型数据。null,undefined,0,” “,NaN返回false,其他返回true。
例如: var a = obj || " " ; //如果 obj 为空,a就赋值为 " " ; var a = check() && do(); //如果check()返回为真,就执行do(),并将结果赋值给 a;
同时,对于||与&&又有这样的特性:
var a = b && c;
b默认值 | c默认值 | a取值 |
---|---|---|
true | true | c |
true | false | c |
false | true | b |
false | false | b |
var a = b || c;
b默认值 | c默认值 | a取值 |
---|---|---|
true | true | b |
true | false | b |
false | true | c |
false | false | c |