二进制逻辑运算符在Javascript中表达条件

时间:2014-05-04 13:41:20

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

我使用三元运算符但经常想要检查没有else子句的东西。我想知道是否有任何简短的方法可以省略这一点。

我发现了

a ? b : {}

可替代if (a) {b},保存2个字符,但不能

a ? b :

我认为它确实有意义,它是三元运算符。

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

或者,是否有二进制?运算符?我已在规范中翻找过,但无法看到我如何使用二进制逻辑运算符,我猜这是if的用途。

有没有办法使用binary logical operator来表达{}的条件或速记?我知道这可能是3个字符的懒惰高度,但我只是好奇,如果有人有任何技巧可以分享。

2 个答案:

答案 0 :(得分:5)

您的代码有几个问题:

  • 不要这样做;它令人困惑

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

  • &&运算符可以执行您想要的操作。

答案 1 :(得分:2)

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

a ? b : 0

a ? b : false

a ? b : null

a ? b : 2 + 2

这真的不是编写简单逻辑的最简单方法,比如测试一个简单的条件。在我看来,if语句更清晰,你不会有一个令人不安的问题,就是必须选择一个毫无意义的表达来填写句法要求。

这也是惯用的,但(再次,意见)并不十分明确:

a && b;

模仿一种称为“守卫”的构造,它存在于某些语言中。