CoffeeScript中的三元运算符

时间:2012-04-13 18:10:52

标签: javascript coffeescript ternary-operator

我需要将值设置为a,这取决于条件。

使用CoffeeScript执行此操作的最短方法是什么?

E.g。这是我在JavaScript中的方式:

a = true  ? 5 : 10  # => a = 5
a = false ? 5 : 10  # => a = 10

7 个答案:

答案 0 :(得分:526)

由于所有内容都是表达式,因而产生了值,因此您只需使用if/else

a = if true then 5 else 10
a = if false then 5 else 10

您可以详细了解表达式示例here

答案 1 :(得分:67)

a = if true then 5 else 10
a = if false then 5 else 10 

请参阅documentation

答案 2 :(得分:21)

几乎任何语言都可以这样做:

a = true  && 5 || 10
a = false && 5 || 10

答案 3 :(得分:11)

Coffeescript 不支持 javascript三元运营商。 以下是 coffeescript author 的原因:

  

我喜欢三元运算符,就像下一个人一样(可能有点像   更多,实际上),但语法并不是什么使他们好 - 他们是   很棒,因为他们可以在一行中使用if / else作为   表达

     

他们的语法只是记忆的另一点神秘魔法   与语言中的任何其他内容都不相似。结果是平等的,   我宁愿让if/elses总是看起来一样(而且永远都是   编译成表达式)。

     

因此,在CoffeeScript中,即使是多行ifs也会编译成三元组   在适当的时候,if if语句没有else子句:

if sunny   
  go_outside() 
else   
  read_a_book().

if sunny then go_outside() else read_a_book()
     

两者都成为三元,都可以用作表达。它是一致的,并且没有新的语法可供学习。所以,感谢你的建议,但我关闭了这个   票据" wontfix"。

请参阅github问题:https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802

答案 4 :(得分:3)

如果主要是真的使用,你也可以用两个语句写出来:

a = 5
a = 10 if false

如果您需要更多可能性,请使用switch语句:

a = switch x
  when true then 5
  when false then 10

使用布尔值可能超大但我发现它非常易读。

答案 5 :(得分:1)

多行版本(例如,如果您需要在每行后添加评论):

a = if b # a depends on b
then 5   # b is true 
else 10  # b is false

答案 6 :(得分:0)

CoffeeScript没有三元运算符。那就是文档所说的。

您仍然可以使用类似的语法

a = true then 5 else 10

要清晰得多。