Javascript 如何在CoffeScript中传递两个匿名函数作为参数?
我想传递两个匿名函数作为jQuery悬停的参数,如下所示:Javascript 如何在CoffeScript中传递两个匿名函数作为参数?,javascript,jquery,anonymous-function,coffeescript,Javascript,Jquery,Anonymous Function,Coffeescript,我想传递两个匿名函数作为jQuery悬停的参数,如下所示: $('element').hover( function() { // do stuff on mouseover }, function() { // do stuff on mouseout } ); 只需一个–鼠标悬停->–就很容易了,但是咖啡脚本中适合两个人的语法是什么?我尝试了…hover->,…hover(>..,等等。但是没有任何东西能让我理解上面的结构。在匿名函数周围加上括号。我认为问题
$('element').hover(
function() {
// do stuff on mouseover
},
function() {
// do stuff on mouseout
}
);
只需一个–
鼠标悬停->
–就很容易了,但是咖啡脚本中适合两个人的语法是什么?我尝试了…hover->
,…hover(>..
,等等。但是没有任何东西能让我理解上面的结构。在匿名函数周围加上括号。我认为问题在于使用单行注释。//
。包含在/*…*/
中的单行注释似乎很好。这里有一个与注释不同的等效示例
$('element').hover(
-> console.log("first")
-> console.log("second")
)
或者使用/*..*/
进行注释
$('element').hover(
-> /* first */
-> /* second */
)
您可以在选项卡下尝试这些示例。CoffeeScript添加了一个return语句来返回函数的最后一个表达式。如果您想要不执行任何操作且结尾不包含return
的基本函数,请尝试:
$('element').hover(
() ->
() ->
)
// $('element').hover(function() {}, function() {});
另一种方法是在调用函数后使用反斜杠,逗号应该正确缩进
$('element').hover \
-> # do stuff on mouseover
,
-> # do stuff on mouseout
不带括号或反斜杠:
f ->
0
, ->
1
1.7.1的输出:
f(function() {
return 0;
}, function() {
return 1;
});
我发誓我做了这件事-我在hover(->)中所指的事-但是我又做了一次,它成功了。谢谢!但是应该注意的是,hover和Paranthesis之间完全没有空格。$(@).hover()!=$(@).hover()否则,输出将被包装在另一组偏执中。此答案中没有足够的信息,Anurag的答案更好地解释了该做什么。谢谢,\n非常好。在长代码行中,我们不需要搜索和查找)。使用\with非常简单。我觉得使用()再次。如果有人无意中发现了这一点:小心不要在这里插入空格:
悬停(
),你将得到额外的括号。命名你的匿名函数。现在就做。你没有合适的名称,所以请叫它们f
和g
:f=(…)->,g=…
。然后($'element')).hover f,g
。如此简单,如此富有表现力。