代码之家  ›  专栏  ›  技术社区  ›  user984003

Javascript问号运算符,多个问号

  •  1
  • user984003  · 技术社区  · 2 年前

    我得到这个:

    return A ? B : C
    

    方法

    如果A为真,则返回B,否则返回C

    但我该如何解读这一条:

    return A ? B ? C : D : E
    

    不是我的代码;我只需要理解它。

    我看过这个 answer/solution ,但仅仅说“Javascript是右关联的,所以你从右到左‘解析’三元组”似乎并不能回答这个问题。

    2 回复  |  直到 2 年前
        1
  •  4
  •   Jack    2 年前

    为了澄清, A ? B : C 是一个三元运算符。而不是 A , B ,以及 C ,我们可以将其重写为:

    BOOLEAN ? EXPRESSION 1 : EXPRESSION 2

    取决于如果 布尔值 要么 TRUE FALSE ,我们会回来的 表达式1 表达式2 .

    A ? B ? C : D : E 是嵌套三元。我们基本上有:

    BOOLEAN 1 ? ( BOOLEAN 2 ? 表达式1 : 表达式2 ) : EXPRESSION 3

    表达式1 从我们前面的例子来看,现在( 布尔值2 ? 表达式1 : 表达式2 )

    所以,读它:

    什么时候? 布尔值1 如果为TRUE,则返回嵌套的三元运算符,并进行第二次计算( 布尔值2 真的?返回 表达式1 ,否则返回 表达式2 ). 然而,如果 布尔值1 如果为FALSE,则返回 表达式3

        2
  •  2
  •   Wyck    2 年前

    A ? B ? C : D : E 相当于 A ? (B ? C : D) : E .

    它解析为 A ? X : E 哪里 X B ? C : D .


    至于如何“读取”它……条件是按顺序检查的,但您可以将条件与条件出现时的值进行匹配 是假的 以嵌套彩虹的方式向外延伸。当所有条件均为真时,中心值出现。也许图表会有所帮助:

    A ? B ? C ? D ? ALL_TRUE : D_IS_FALSE : C_IS_FALSE : B_IS_FALSE : A_IS_FALSE
    │   │   │   │    X         │            │            │            │
    │   │   │   └──────────────┘            │            │            │
    │   │   └───────────────────────────────┘            │            │
    │   └────────────────────────────────────────────────┘            │
    └─────────────────────────────────────────────────────────────────┘