如何在CoffeeScript中将两个匿名函数作为参数传递?

时间:2011-06-24 03:33:51

标签: javascript jquery anonymous-function coffeescript

我想传递两个匿名函数作为jQuery悬停的参数,如下所示:

$('element').hover(
  function() {
    // do stuff on mouseover
  },
  function() {
    // do stuff on mouseout
  }
);

只需一个就可以轻松实现 - hover -> - 但CoffeeScript中两种语法的正确用法是什么?我尝试了...hover ->...hover( ->...等等,但没有任何东西可以让我获得上述结构。

4 个答案:

答案 0 :(得分:52)

我认为问题在于使用单行注释///* .. */中包含的单行注释似乎运行正常。这是一个与评论不同的等效示例。

$('element').hover(
  -> console.log("first")
  -> console.log("second")
)

或使用/* .. */进行评论。

$('element').hover(
  -> /* first */
  -> /* second */
)

您可以在Try CoffeeScript标签下试用这些示例。 CoffeeScript添加一个return语句来返回函数的最后一个表达式。如果您希望裸机功能无效且最后不包含return,请尝试:

$('element').hover(
  () ->
  () ->
)
// $('element').hover(function() {}, function() {});

答案 1 :(得分:24)

将括号括在匿名函数周围。

答案 2 :(得分:21)

另一种方法是在调用函数之后使用反斜杠,逗号应正确缩进。

$('element').hover \
  -> # do stuff on mouseover
  ,
  -> # do stuff on mouseout

答案 3 :(得分:8)

没有括号或反斜杠

f ->
  0
, ->
  1

1.7.1的输出:

f(function() {
  return 0;
}, function() {
  return 1;
});