请告诉我如何在coffeescript写javascript下面。
setTimeout(function(){ something(param); }, 1000);
这将导致大致相同的翻译(感谢@Joel Mueller):
setTimeout (-> something param), 1000
注意,这不是一个准确的翻译,因为匿名函数返回调用something(param)的结果,而不是像代码片段中那样调用undefined。
something(param)
setTimeout ( -> something param ), 1000
括号是可选的,但在我看来,以逗号开头的行有点乱。
我认为将回调函数作为函数的最后一个参数是一个有用的约定。例如,Node.js API通常就是这种情况。记住这一点:
delay = (ms, func) -> setTimeout func, ms delay 1000, -> something param
当然,这会为你所做的每一个setTimeout增加一个额外函数调用的开销;但在今天的JS解释器中,性能上的缺陷是微不足道的,除非你每秒做几千次。(你为什么要每秒设置数千个超时?)
setTimeout
当然,一个更直接的方法是简单地命名你的回调,这往往会产生更可读的代码(jashkenas是这个习语的忠实粉丝):
callback = -> something param setTimeout callback, 1000
setTimeout -> something param , 1000
另一个选择:
setTimeout( -> something param 1000 )
我觉得这是做同样事情的最好方法,
setTimeout (-> alert "hi"), 1000