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
经过一些研究,我找不到这个问题的答案。
鉴于此:
'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