为何表达式true || false && false的求值结果为true?
为什么
true || false && false的求值结果是true? 嘿,这个问题的关键在于逻辑运算符的优先级——这是很多新手容易踩的坑,咱们一步步拆解就明白啦!
第一步:先明确运算符优先级规则
在JavaScript(以及绝大多数类C风格的编程语言)里,&&(逻辑与)的优先级比||(逻辑或)更高。这意味着求值时,会先处理&&连接的部分,再计算||的部分,而不是简单地从左到右顺序执行。
第二步:拆解表达式逐步计算
咱们把原表达式按优先级拆分,相当于给高优先级的部分加括号:
true || (false && false)
先算括号里的
false && false:- 逻辑与的规则是:只有两边操作数都为
true时,结果才是true;只要有一个是false,结果就是false。 - 所以这部分的结果是
false。
- 逻辑与的规则是:只有两边操作数都为
再把结果代回原表达式,就简化成了:
true || false
- 逻辑或的规则是:只要有一个操作数为
true,结果就是true;只有两边都是false时才返回false。 - 所以这个表达式的结果是
true。
额外小提示:想改变优先级怎么办?
如果你本来想先计算true || false,再和false做逻辑与,就得手动加括号强制改变优先级:
(true || false) && false
这个表达式的结果就是false——先算true || false得到true,再和false做与运算,最终返回false。
内容的提问来源于stack exchange,提问作者Khangal J
相关产品推荐
相关产品推荐

