Javascript: 为什么三元表达式放在逻辑或之后返回结果?

Javascript: Why is a ternary expression result returned when placed after a logical OR?

经过一些研究,我找不到这个问题的答案。

鉴于此:

'Hello' || true ? true : false

结果是 true,这对我来说没有意义。因为第一个值是真实的,所以我希望它的结果是 'Hello',并跳过三元。然而,它所做的是使用三元的结果。

这是为什么?

这是因为 JavaScript 中的运算符优先级: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

||? 之前的解释器,因此它等同于:

('Hello' || true) ? true : false

归结为操作的优先级。

|| 运算符的优先级高于 ?:。这意味着它与此相同:

('Hello' || true) ? true : false

('Hello' || true) 是真实的,所以 truthy ? true : false 将 return true