优先级查看
&& 执行顺序高于||,并且两者都是从左到右执行,
1 || 2 && console.log('result')
但是执行这段代码时,却没有打印result,这是为什么。
优先级查看
&& 执行顺序高于||,并且两者都是从左到右执行,
1 || 2 && console.log('result')
但是执行这段代码时,却没有打印result,这是为什么。
&&是逻辑与运算,逻辑与,逻辑或都是短路逻辑,如果左侧表达式为 false,则直接短路返回结果,不再运算右侧表达式,就是这么定义的,运算逻辑如下:
第 1 步:计算第一个操作数(左侧表达式)的值。
第 2 步:检测第一个操作数的值。如果左侧表达式的值可转换为 false(如 null、undefined、NaN、0、""、false),那么就会结束运算,直接返回第一个操作数的值。
第 3 步:如果第一个操作数可以转换为 true,则计算第二个操作数(右侧表达式)的值。
第 4 步:返回第二个操作数的值。
还有一句话比较重要,优先级与求值顺序无关。如a+b && bc,虽然优先级最高,但这个表达式求值顺序是从左到右。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
这叫短路求值,具体说就是在
a||b
表达式中,如果a
为真,计算机不会再去计算b
的值,由于1
为真所以不会再计算2&&console.log(...)
的值所以不会打印result
.&&也有短路求值,如果左边的值为假,则不再计算右边的值。