&& 和 || 执行顺序问题
优先级查看
&& 执行顺序高于||,并且两者都是从左到右执行,
1 || 2 && console.log('result')
但是执行这段代码时,却没有打印result,这是为什么。
回答
这叫短路求值,具体说就是在a||b
表达式中,如果a
为真,计算机不会再去计算b
的值,由于1
为真所以不会再计算2&&console.log(...)
的值所以不会打印result
.
&&也有短路求值,如果左边的值为假,则不再计算右边的值。
&&是逻辑与运算,逻辑与,逻辑或都是短路逻辑,如果左侧表达式为 false,则直接短路返回结果,不再运算右侧表达式,就是这么定义的,运算逻辑如下:
第 1 步:计算第一个操作数(左侧表达式)的值。
第 2 步:检测第一个操作数的值。如果左侧表达式的值可转换为 false(如 null、undefined、NaN、0、""、false),那么就会结束运算,直接返回第一个操作数的值。
第 3 步:如果第一个操作数可以转换为 true,则计算第二个操作数(右侧表达式)的值。
第 4 步:返回第二个操作数的值。
还有一句话比较重要,优先级与求值顺序无关。如a+b && bc,虽然优先级最高,但这个表达式求值顺序是从左到右。
可以参考这两篇文章 :
https://juejin.im/pin/6844910...
https://blog.csdn.net/qq_4094...
以上是 && 和 || 执行顺序问题 的全部内容, 来源链接: utcz.com/a/49877.html