Javascript 何时在回调函数名后使用()?
可能重复:Javascript 何时在回调函数名后使用()?,javascript,Javascript,可能重复: 这两者之间的区别是什么: $("a").on("click", anotherFunction); 这是: $("a").on("click", anotherFunction()); 有没有办法在没有匿名函数的情况下不让最后一个自动执行?第一个通过实际函数;第二个传递函数的返回值 我不清楚你最后一个问题的意思。另一个函数是对函数的引用anotherFunction()是在没有参数的情况下计算的函数(因此没有对anotherFunction的引用)。如果函数返回了另一个函数,则
这两者之间的区别是什么:
$("a").on("click", anotherFunction);
这是:
$("a").on("click", anotherFunction());
有没有办法在没有匿名函数的情况下不让最后一个自动执行?第一个通过实际函数;第二个传递函数的返回值
我不清楚你最后一个问题的意思。
另一个函数是对函数的引用anotherFunction()
是在没有参数的情况下计算的函数(因此没有对anotherFunction
的引用)。如果函数返回了另一个函数,则您希望调用要传递的函数的唯一原因是该函数返回了另一个函数。另一个函数本身就是对该函数本身的引用
anotherFunction()
调用该函数并生成该函数返回的任何结果
这是一个巨大的差异
这就像以下两者之间的区别:
function test() {
alert("Hello!");
}
setTimeout(test,1000); // called after one second
setTimeout(test(),1000); // called immediately, timeout fails.
你应该用第一个。这是因为()执行前面定义的函数。如果使用第一个函数,则仅在需要时调用另一个回调函数。JQuery将执行类似于另一个函数(在名为callback的变量中)callback()的操作。传递函数引用和调用该函数之间的区别
第一种情况(可能是正确的)表示:在事件发生时调用此函数
第二个将被解释为:立即调用此函数,并使用作为回调返回的任何内容。它最好是一个我以后可以调用的函数
后一种情况仅在函数定义如下时有效:
function anotherFunction() {
return function() {
//real handler
}
}
“因此没有引用另一个函数”
”-严格来说这不是真的,因为即使没有参数,参数
仍然存在,并且参数。被调用方是函数。我想你需要这样:$('a')。on('click',另一个函数)。triggerHandler('click')代码>。因此,该函数将成为click处理程序,并且也会立即被调用。我认为OP除了将其绑定到click event.Hmmm之外,还希望立即调用该函数。如果是这样的话,我建议将两者分开:anotherFunction()$(a)点击另一项功能
jQuery有一个.triggerHandler()
方法用于此目的。@ŠimeVidas,很好的添加。谢谢。不用了,在那一个中,只有在点击链接时才会调用另一个函数。另一个示例将调用函数一次,如果单击链接,则不会发生任何事情!对不起,我弄错了。我想知道setTimeout(test(),1000)
将使超时失败,但如果例如somefunction('arg',callback())
,回调是否可能在主函数完成执行之前运行?是的,回调将在somefunction之前运行,其返回值将用作参数。