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

IT技术 javascript jquery anonymous-function coffeescript
2021-02-28 06:44:31

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

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

只需要一个就很容易了hover ->——但是CoffeeScript 中两个的正确语法是什么?我试过...hover ->...hover( ->...等等,但没有什么能让我得到上述结构。

4个回答

我认为问题在于使用单行注释//包含在中的单行注释/* .. */似乎工作正常。这是一个等效的示例,其中包含注释以外的内容。

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

或者使用/* .. */.

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

您可以在Try CoffeeScript选项卡下尝试这些示例CoffeeScript 添加了一个 return 语句来返回函数的最后一个表达式。如果您想要什么都不做return并且最后不包含 a 的基本函数,请尝试:

$('element').hover(
  () ->
  () ->
)
// $('element').hover(function() {}, function() {});
如果有人偶然发现:小心不要在此处插入空格: hover (,您最终会得到额外的括号。
2021-04-19 06:44:31

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

我发誓我这样做了 - 我用悬停( - > - 但又做了一次并且它起作用了。谢谢!
2021-04-28 06:44:31
这个答案中没有足够的信息,Anurag 的答案更好地解释了该怎么做。
2021-05-09 06:44:31
但应该注意的是,悬停和括号之间的空格完全为零。$(@).hover() != $(@).hover () 否则,输出将包含在另一组括号中。
2021-05-17 06:44:31

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

$('element').hover \
  -> # do stuff on mouseover
  ,
  -> # do stuff on mouseout
谢谢,\很好去。而在很长的代码行中,我们不需要搜索和查找)。使用 \ 和 , 真的很简单。我再次使用 () 时感觉 jquery。
2021-04-18 06:44:31

没有括号或反斜杠

f ->
  0
, ->
  1

1.7.1 上的输出:

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