2

可能重复:
在 JavaScript 中,如果我用括号调用函数会有所不同吗?

这有什么区别:

$("a").on("click", anotherFunction);

还有这个:

$("a").on("click", anotherFunction());

有没有办法在没有匿名函数的情况下不让最后一个自我可执行?

4

5 回答 5

3

第一个通过实际功能;第二个传递函数的返回值。

我不清楚你最后一个问题的含义。

于 2012-06-08T19:31:55.330 回答
1

anotherFunction是对函数的引用。anotherFunction()是在没有参数的情况下评估的函数(因此没有对 的引用anotherFunction)。您想要调用函数以将函数传递到预期函数的唯一原因是该函数是否返回另一个函数。

于 2012-06-08T19:32:08.043 回答
1

anotherFunction它本身就是对函数本身的引用。

anotherFunction()调用函数并产生函数返回的任何结果。

这是一个极其巨大的差异。

这就像以下之间的区别:

function test() {
    alert("Hello!");
}
setTimeout(test,1000); // called after one second
setTimeout(test(),1000); // called immediately, timeout fails.
于 2012-06-08T19:32:23.963 回答
0

你应该使用第一个。这是因为 () 执行它们之前定义的函数。如果您使用第一个,则回调 anotherFunction 仅在您需要时调用。JQuery 会做类似 anotherFunction 的事情(在一个名为回调的 var 中) callback()

于 2012-06-08T19:32:25.097 回答
0

区别在于传递函数引用和调用该函数。

第一种情况(可能是正确的)意味着:当事件发生时调用这个函数。

第二个将被解释为:立即调用此函数并将返回的任何内容用作回调。最好是我以后可以调用的函数。

后一种情况仅在函数定义如下时才有效:

function anotherFunction() {
    return function() {
        //real handler
    }
}
于 2012-06-08T19:32:49.313 回答