我猜你是想问短路求值
吧。
a()&&b();
这句话从表面上理解,纯粹就是两个函数返回值的“与”运算而已。
函数没有返回值的时候,默认返回undefined
,而undefined
会被认为是false
。
在“与”运算中,根据运算规则,从左往右一旦遇到false
,那么整个式子的求值就会结束,直接返回false
。
所以回到你这个例子中,函数a首先运行,返回undefined
,求值结束,函数b不会运行。
逻辑与 (&&)
expr1 && expr2 如果expr1 能转换成false则返回expr1,否则返回expr2. 因此, 在Boolean环境中使用时, 两个操作结果都为true时返回true,否则返回false.
短路计算
由于逻辑表达式的运算的顺序是从左到右,也可以用以下规则进行"短路"计算:
false && (anything) 短路计算的结果为false.
true || (anything) 短路计算的结果为 true.
该规则确保这些计算的准确性. 注意如果上述表达式中的 anything 部分不能被计算的话, 两边都不会生效.还需要注意的是,上述表达式中的 anything 部分是任意的单个逻辑表达式(小括号中).
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
哪里怪异了?