【问题标题】:Ternary operator, shortcut to return checked condition if true?三元运算符,如果为真则返回检查条件的快捷方式?
【发布时间】:2022-01-04 21:30:40
【问题描述】:

我正在寻找对于已经相对紧凑的符号是否有更短的符号。对于代码中相当常见的模式来说,这似乎是某种语法。

这里,三元运算符如果为真则返回 props.initialValues.time,如果为假则返回其他内容:

props.initialValues.time ? props.initialValues.time : props.startTime

但是为什么在这种情况下两次指定检查条件呢? 我发现自己试图这样输入:(也许我不久前在其他地方看到过)

props.initialValues.time ? : props.startTime

我的意思是,如果为真则返回检查的条件,否则返回props.startTime。 JS 或任何其他语言中是否存在用于此目的的类似语法?在谷歌上查了一下,运气不好,也许我的问题措辞不正确,或者它实际上不存在。

【问题讨论】:

    标签: javascript syntax conditional-statements operators conditional-operator


    【解决方案1】:

    如果要检查属性是否存在,可以使用nullish coalescing operator

    props.initialValues.time ?? props.startTime
    

    let a = 5
    let b = 6
    
    console.log(a ?? b)
    console.log(a ? a : b)

    【讨论】:

      【解决方案2】:

      || 可以用作快捷方式 - 如果左侧为真,它将评估左侧,否则评估右侧。

      props.initialValues.time || startTime
      

      在现代语法中,如果左侧具体为 undefined 或 null,则最好使用 ??

      props.initialValues.time ?? startTime
      

      【讨论】:

        【解决方案3】:

        a ? a : b可以改为a || b

        a ? b : a可以改成a && b

        所以对于你的情况:

        props.initialValues.time || props.startTime
        

        【讨论】:

          猜你喜欢
          • 2011-04-03
          • 2014-08-03
          • 2021-11-04
          • 2012-01-22
          • 1970-01-01
          • 1970-01-01
          • 2019-07-21
          相关资源
          最近更新 更多