js逻辑操作符详解

JavaScript学习笔记

逻辑操作符

js中的逻辑操作符,也称布尔操作符或者逻辑表达式。当用逻辑操作符操作简单的布尔类型值得时候,我们很容易得出结果,但是如果操作数/表达式结果(以下简称为操作数)不是纯布尔类型的值,就没那么简单得出结论了。

1、逻辑非(!)

先从最简单的逻辑非讲起,它放置在一个单独的操作数之前,作用是将该操作数的布尔值进行取反。

它的运算规则是:先将操作数转换为布尔值,然后再对布尔值求反。

也就是说不论操作数是什么类型,都会先将其转换成布尔值,js中除了空字符串、null、undefined、0、false、NaN是假值之外,其他均是真值,包括{}、[]。

2、逻辑与(&&)

逻辑与和逻辑非不同,对于不同的数据类型的操作数,逻辑与的执行规则是不一样的。

2-1、操作数都是布尔值

操作数都是布尔值的时候,当两边都是true的时候,结果为true,如果有一方或者两方都是false,则返回false。

2-2、操作数有非布尔值

当操作数有非布尔值的时候,整个表达式返回的值就不一定是布尔类型的true和false了,我们把操作符两方的数据类型分为两种,真值和假值,当然这个真值或假值可以是数字、字符串、布尔类型、表达式的结果等等,上面已经提到,除了空字符串、null、undefined、0、false、NaN是假值之外,其他均是真值。

运算的结果也是分两种:真值和假值。和&&操作纯布尔值一样,如果两边都是真值,则返回真值,如果两方有一方为假值,则返回假值,但是具体返回哪个真值哪个假值则需要具体讨论。

具体规则为:

  • 如果左操作数值为假值,则返回左操作数的值。因为有一方为假值,则必然为假,这时不会对右操作符进行操作,形成“逻辑短路”(逻辑短路是对于逻辑运算而言,是指仅计算逻辑表达式中的一部分便能确定结果,而不对整个表达式进行计算的现象。)。
  • 如果左操作数是真值右操作数为假值,则整个表达式为假值,并以右操作数的值作为整个表达式的结果。
  • 如果左操作数和右操作数都为真值,则整个表达式为真值,并以右操作数的值作为整个表达式的结果。

3、逻辑或(||)

理解了逻辑与,逻辑或就好理解了。

3-1、操作数都是布尔值

操作数都是布尔值的时候,当两边都是false的时候,结果为false,如果有一方或者两方都是true,则返回true。

2-2、操作数有非布尔值

运算的结果也是分两种:真值和假值。和&&操作纯布尔值一样,如果两边都是假值,则返回假值,如果两方有一方为真值,则返回真值,但是具体返回哪个真值哪个假值则需要具体讨论。

具体规则为:

  • 如果左操作数值为真值,则返回左操作数的值。因为有一方为真值,则必然为真,这时不会对右操作符进行操作,也是“逻辑短路”的一种现象。
  • 如果左操作数是假值右操作数为真值,则整个表达式为真值,并以右操作数的值作为整个表达式的结果。
  • 如果左操作数和右操作数都为假值,则整个表达式为假值,并以右操作数的值作为整个表达式的结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值