【问题标题】:Javascript: Why is a ternary expression result returned when placed after a logical OR? [duplicate]Javascript:为什么放在逻辑或之后会返回三元表达式结果? [复制]
【发布时间】:2019-05-19 01:34:36
【问题描述】:

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

鉴于此:

'Hello' || true ? true : false

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

这是为什么呢?

【问题讨论】:

标签: javascript logical-operators ternary-operator


【解决方案1】:

归结为操作的优先级。

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2018-05-08
      • 2020-01-07
      • 1970-01-01
      • 2019-07-20
      • 2021-01-11
      相关资源
      最近更新 更多