欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简单理解JS的&&和||

程序员文章站 2022-07-08 16:03:01
本文只针对&&和||的行为进行一个理解,真实情况下JS引擎是不是这么做的我并没有考察知识铺垫在讲&&和||之前,我们需要了解一个函数Boolean它的行为如下:返回为true的:Boolean(true)Boolean(非空字符串类型)Boolean(非零非NaN数字类型(包括Infinity))null的结果为falseundefined的结果为falseBoolean(任何对象类型)返回为false的参数:Boolean(fals....

本文只针对&&||的行为进行一个理解,真实情况下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非严格模式测试,欢迎评论区交流、批评、指正

本文地址:https://blog.csdn.net/qq_43568746/article/details/112504247