简单理解JS的&&和||

本文只针对&&||的行为进行一个理解,真实情况下JS引擎是不是这么做的我并没有考察

知识铺垫

在讲&&||之前,我们需要了解一个函数Boolean

它的行为如下:

  • 返回为true的:
  1. Boolean(true)
  2. Boolean(非空字符串类型)
  3. Boolean(非零非NaN数字类型(包括Infinity))
  4. null的结果为false
  5. undefined的结果为false
  6. Boolean(任何对象类型)
  • 返回为false的参数:
  1. Boolean(false)
  2. Boolean(空字符串)
  3. Boolean(0或者NaN)
  4. Boolean(null)
  5. Boolean(undefined)
  6. 对象类型的结果为true

其实就是if(...)里面的隐式转化逻辑,但是实际上这里在隐式转化时用的方法是不是就是Boolean我还没有深究,欢迎评论补充。

回到正题

其实这两个符号就是一个短路运算符,它的作用是返回一个操作数,规则如下:

对每个操作数进行Boolean():

  • 对于||

    从左到右找Boolean()返回为true的操作数,如果能在最后一个||之前找到返回为true的操作数,就返回这个操作数然后结束,否则,返回最后面的操作数

  • 对于&&

    从左到右找Boolean()返回为false的操作数,如果能在最后一个&&之前找到返回为false的操作数,就返回这个操作数然后结束,否则,返回最后面的操作数

其实这个规则也适用于我们一般遇到的逻辑判断:

true || false

true || true

false || true

false || false

true && false

true && true

false && true

false && false

以上均在V8非严格模式测试,欢迎评论区交流、批评、指正

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值