【问题标题】:Binary logical operator to express a conditional in Javascript [duplicate]在Javascript中表达条件的二元逻辑运算符[重复]
【发布时间】:2014-06-20 20:07:58
【问题描述】:

我使用三元运算符,但经常想在没有 else 子句的情况下进行检查。我想知道是否有任何简短的方法可以省略它。

我发现了

a ? b : {}

作为if (a) {b}的替代品,节省2个字符,但不是

a ? b :

我猜这是有道理的,它是一个 三元 运算符。

我唯一的想法是那些空的大括号有点unsightly,还有没有其他方法可以指定一个空白的: 语句?

或者,是否有二进制? 运算符?我翻遍了规范,但看不到如何使用二元逻辑运算符,我猜这就是 if 的用途。

有什么方法可以使用 binary logical operator 来表达 {} 的条件或简写吗?我知道这可能是 3 个角色的懒惰的高度,但我只是好奇是否有人有任何技巧可以分享。

【问题讨论】:

  • 你可以做a && b(),假设 b 是一个函数调用。虽然不是这样的粉丝。
  • 写三元比较方便,但是比if-else慢很多。
  • @radubogdan:“慢得多”是什么意思?
  • @Bergi 这不是 if else 速记的完全重复,它是三元运算符速记 ¬_¬ Ppl 太快了,无法在这里关闭问题
  • @lmmx:请阅读该问题和答案。您要求if 速记,另一个问题要求“我可以在没有 else 的情况下编写 'if else' 速记吗?”!那么有什么区别呢?

标签: javascript ternary-operator logical-operators binary-operators


【解决方案1】:

您的代码有几个问题:

  • 不要那样做;很混乱

  • {} 不是空块;它是一个对象文字。 ""042 会产生相同的效果。

  • && 运算符会做你想做的事。

【讨论】:

    【解决方案2】:

    在三元? : 表达式中,子部分不是语句,它们是表达式。我从未见过{} 被使用过;没关系,但实际上任何非空表达式都可以:

    a ? b : 0
    
    a ? b : false
    
    a ? b : null
    
    a ? b : 2 + 2
    

    这确实不是编写简单逻辑(如测试简单条件)的最清晰方法。在我看来,if 语句更清晰,而且您不必为了满足句法要求而不得不选择一个无意义的表达式。

    这也是惯用的,虽然(再次,观点)不是很清楚:

    a && b;
    

    这模仿了某些语言中存在的称为“守卫”的结构。

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 1970-01-01
      • 2016-04-14
      • 2019-06-15
      • 2013-09-20
      • 1970-01-01
      • 2019-04-21
      • 2011-03-14
      相关资源
      最近更新 更多