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之前运行,其返回值将用作参数。