代码之家  ›  专栏  ›  技术社区  ›  Diego Mijelshon

为什么coffeescript需要括号?

  •  0
  • Diego Mijelshon  · 技术社区  · 6 年前

    请看以下片段:

    if a
      return
    
    if a b
      return
    
    if (a b)
      return
    
    if a(b)
      return
    
    if a((b) -> c)
      return
    
    if (a (b) -> c)
      return
    
    if a (b) -> c
      return
    

    最后一个不会编译,它会产生一个误导性的错误消息, unexpected if .

    0 回复  |  直到 6 年前
        1
  •  1
  •   caffeinated.tech    6 年前

    if a (b) -> c
      return
    

    可以按您的预期进行解释:

    if (a (b) -> c)
      return
    

    或者是 return 被理解为匿名功能的延续:

    if (a (b) -> c
      return)
    

    我不确定,但我想它会选择 返回 在函数内部,因为这是最接近的上下文,而且它还没有被显式地关闭(例如用括号)。

    如果你所做的只是 在if语句中,可以使用尾随if:

    return if a (b) -> c
    

    isValid = a (b) -> c
    return if isValid