如何写setTimeout与参数Coffeescript

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

setTimeout(function(){
something(param);
}, 1000);
68527 次浏览

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

setTimeout (-> something param), 1000

注意,这不是一个准确的翻译,因为匿名函数返回调用something(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
)

我觉得这是做同样事情的最好方法,

setTimeout (-> alert "hi"), 1000