【问题标题】:Unexpected Coffeescript transformation with if? [duplicate]使用 if 进行意外的 Coffeescript 转换? [复制]
【发布时间】:2013-10-05 05:35:50
【问题描述】:

这个 CoffeeScript:

x = y > z ? 'a' : 'b'

Compiles to:

x = (_ref = y > z) != null ? _ref : {
  'a': 'b'
};

我认为这是意料之中的,只是不直观。

在coffeescript中有更好的方法吗?

【问题讨论】:

    标签: coffeescript conditional-operator


    【解决方案1】:

    CoffeeScript 的? 运算符是存在运算符(也使用“soak”或“elvis”名称)。 例如:context = window ? global.

    CoffeeScript 的执行方式是 x = if x > z then 'a' else 'b'(或 x = x > z and 'a' or 'b',但“和”操作数必须为真),它将编译为您期望的三元运算符。

    【讨论】:

      【解决方案2】:

      我想这就是我想要的,但我不知道我是否满意。

      咖啡脚本:

      x = if y > z then 'a' else 'b'
      

      Javascript

      x = y > z ? 'a' : 'b';
      

      【讨论】:

        【解决方案3】:

        您可以使用if 代替?:

        x = if y > z then 'a' else 'b'
        

        这个compiles to

        var x;
        
        x = y > z ? 'a' : 'b';
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-16
          • 1970-01-01
          • 2012-12-01
          • 1970-01-01
          • 2022-08-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多