请告诉我如何在coffeescript写javascript下面。

setTimeout(function(){
    something(param);
}, 1000);

当前回答

另一个选择:

setTimeout(
    -> something param
    1000
)

其他回答

这将导致大致相同的翻译(感谢@Joel Mueller):

setTimeout (-> something param), 1000

注意,这并不是一个精确的翻译,因为匿名函数返回的是调用某个参数(param)的结果,而不是像代码片段中那样调用undefined。

setTimeout ( ->
  something param
), 1000

括号是可选的,但在我看来,以逗号开头的行有点乱。

我认为将回调函数作为函数的最后一个参数是一个有用的约定。例如,Node.js API通常就是这种情况。记住这一点:

delay = (ms, func) -> setTimeout func, ms

delay 1000, -> something param

当然,这将为您执行的每个setTimeout增加额外函数调用的开销;但在今天的JS解释器中,性能上的缺陷是微不足道的,除非你每秒做几千次。(你为什么要每秒设置数千个超时?)

当然,一个更直接的方法是简单地命名你的回调,这往往会产生更可读的代码(jashkenas是这个习语的忠实粉丝):

callback = -> something param
setTimeout callback, 1000
setTimeout -> 
  something param
, 1000

另一个选择:

setTimeout(
    -> something param
    1000
)