逻辑运算符: ! && || 优先级关系:! && ||
布尔操作符(逻辑操作符)
布尔操作符有3种: &&(与)、||(或)、 ! (非)
&&(与) :找第一个为false的值并返回
表达式1 && 表达式2 && 表达式3 && .......
返回只有两种结果 true false
当表达式1和表达式2 都为true的时候, 结果为true
document.write(true && true && true );
只要有一个条件不成立,返回false
document.write(true && false && true );
说明:在有一个操作数不是布尔值的情况,逻辑与操作就不一定返回值,此时它遵循下列规则:
1、如果第一个操作数隐式类型转换后为true,则返回第二个操作数
document.write(54 && 38 );
2、如果第一个操作数隐式类型转换后为false,则返回第一个操作数
document.write(0 && 38 );
3、如果有一个操作数是null,则返回null
document.write(38 && null );
4、如果有一个操作数是NaN,则返回NaN
document.write(38 && NaN );
5、如果有一个操作数是undefined,则返回undefined
document.write(38 && undefined );
&&:两边都成立,才成立. 如果前面有一个不成立就返回不成的值。如果都成立,返回最后成立的那个值
返回的是起决定性作用的那个值
||(或):找第一个为true的值并返回
表达式1 || 表达式2
返回只有两种结果 true false
表达式1和表达式2 有一个为true,结果为true
只要有一个条件成立,返回true
document.write(false || false || true );
说明:在有一个操作数不是布尔值的情况,逻辑与操作就不一定返回值,此时它遵循下列规则:
1、如果第一个操作数隐式类型转换后为true,则返回第一个操作数
document.write(48 || 0);
2、如果第一个操作数隐式类型转换后为false,则返回第二个操作数
document.write(false || 0);
3)、如果两个操作数是null,则返回null
document.write(null || null);
4、如果两个操作数是NaN,则返回NaN
document.write(NaN || NaN);
5、如果两个操作数是undefined,则返回undefined
document.write(undefined || undefined);
总结: 几乎所有语言中||和&&都遵循“短路”原理,我们可以总结为&&找到假的就停止寻找,||找到真的就停止寻找,如果找不到,就返回最后一个
! (非)(取反)
说明:
1、无论操作数是什么数据类型,逻辑非都会返回一个布尔值
2、逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再 对其求反。
document.write(!NaN);
3、同时使用两个逻辑非操作符时,第一个逻辑非操作会基于无论什么操作数返回一个布尔值,而第二个逻辑非则对该布尔值求反。
document.write(!!NaN);
小编能力有限,存在不足或不全,请大家指出,共同学习与交流。