简单理解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的:
Boolean(true)
Boolean(非空字符串类型)
Boolean(非零非NaN数字类型(包括Infinity))
- null的结果为false
- undefined的结果为false
Boolean(任何对象类型)
- 返回为false的参数:
Boolean(false)
Boolean(空字符串)
Boolean(0或者NaN)
Boolean(null)
Boolean(undefined)
- 对象类型的结果为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
上一篇: 机器人就在我们身边