逻辑运算符

逻辑运算符: ! && || 优先级关系:! && ||
布尔操作符(逻辑操作符)
布尔操作符有3种: &&(与)、||(或)、 ! (非)
&&(与) :找第一个为false的值并返回
表达式1 && 表达式2 && 表达式3 && .......
返回只有两种结果 true false
当表达式1和表达式2 都为true的时候, 结果为true

    document.write(true && true && true );
image.png

只要有一个条件不成立,返回false

    document.write(true && false && true );
image.png

说明:在有一个操作数不是布尔值的情况,逻辑与操作就不一定返回值,此时它遵循下列规则:
1、如果第一个操作数隐式类型转换后为true,则返回第二个操作数

    document.write(54 && 38 );
image.png

2、如果第一个操作数隐式类型转换后为false,则返回第一个操作数

    document.write(0 && 38 );
image.png

3、如果有一个操作数是null,则返回null

    document.write(38 && null );
image.png

4、如果有一个操作数是NaN,则返回NaN

    document.write(38 && NaN );
image.png

5、如果有一个操作数是undefined,则返回undefined

    document.write(38 && undefined );
image.png

&&:两边都成立,才成立. 如果前面有一个不成立就返回不成的值。如果都成立,返回最后成立的那个值
返回的是起决定性作用的那个值

||(或):找第一个为true的值并返回
表达式1 || 表达式2
返回只有两种结果 true false
表达式1和表达式2 有一个为true,结果为true
只要有一个条件成立,返回true

    document.write(false || false || true );
image.png

说明:在有一个操作数不是布尔值的情况,逻辑与操作就不一定返回值,此时它遵循下列规则:
1、如果第一个操作数隐式类型转换后为true,则返回第一个操作数

    document.write(48 || 0);
image.png

2、如果第一个操作数隐式类型转换后为false,则返回第二个操作数

    document.write(false || 0);
image.png

3)、如果两个操作数是null,则返回null

    document.write(null || null);
image.png

4、如果两个操作数是NaN,则返回NaN

    document.write(NaN || NaN);
image.png

5、如果两个操作数是undefined,则返回undefined

    document.write(undefined || undefined);
image.png

总结: 几乎所有语言中||和&&都遵循“短路”原理,我们可以总结为&&找到假的就停止寻找,||找到真的就停止寻找,如果找不到,就返回最后一个

! (非)(取反)
说明:
1、无论操作数是什么数据类型,逻辑非都会返回一个布尔值
2、逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再 对其求反。

    document.write(!NaN);
image.png

3、同时使用两个逻辑非操作符时,第一个逻辑非操作会基于无论什么操作数返回一个布尔值,而第二个逻辑非则对该布尔值求反。

    document.write(!!NaN);
image.png

小编能力有限,存在不足或不全,请大家指出,共同学习与交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容