How to pass two anonymous functions as arguments in CoffeScript?

对着背影说爱祢 提交于 2019-11-26 09:31:41

问题


I want to pass two anonymous functions as arguments for jQuery\'s hover, like so:

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

It\'s easy with just one – hover -> – but what is the proper syntax in CoffeeScript for two? I tried ...hover ->, ...hover( ->..., etc. but nothing gets me the above structure.


回答1:


Put parentheses around the anonymous functions.




回答2:


I think the problem lies with using single line comments //. Single-line comments enclosed in /* .. */ seem to work fine. Here's an equivalent example with something other than a comment.

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

Or with comments using /* .. */.

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

You can try these examples under the Try CoffeeScript tab. CoffeeScript adds a return statement to return the last expression of the function. If you wanted bare-bones functions which do nothing and don't contain a return at the end, try:

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



回答3:


Another way is to use backslash after the caller function, the comma should be indented correctly.

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



回答4:


Without parenthesis or backslash:

f ->
  0
, ->
  1

Output on 1.7.1:

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


来源:https://stackoverflow.com/questions/6463052/how-to-pass-two-anonymous-functions-as-arguments-in-coffescript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!