これの違いは何ですか:
$("a").on("click", anotherFunction);
この:
$("a").on("click", anotherFunction());
そして、匿名関数なしで最後の自己実行可能ファイルを作成しない方法はありますか?
これの違いは何ですか:
$("a").on("click", anotherFunction);
この:
$("a").on("click", anotherFunction());
そして、匿名関数なしで最後の自己実行可能ファイルを作成しない方法はありますか?
最初のものは実際の関数を渡します。2 番目は、関数の戻り値を渡します。
最後の質問の意味がよくわかりません。
anotherFunction
関数への参照です。anotherFunction()
は、引数なしで評価された関数です (したがって、への参照はありませんanotherFunction
)。関数が期待される場所で渡される関数を呼び出したい唯一の理由は、その関数が別の関数を返した場合です。
anotherFunction
それ自体が関数自体への参照です。
anotherFunction()
関数を呼び出し、関数が返すものは何でも返されます。
これは非常に大きな違いです。
次のような違いがあります。
function test() {
alert("Hello!");
}
setTimeout(test,1000); // called after one second
setTimeout(test(),1000); // called immediately, timeout fails.
最初のものを使用する必要があります。これは、() がその前に定義された関数を実行するためです。最初のものを使用する場合、コールバック anotherFunction は必要なときにのみ呼び出されます。JQueryはanotherFunctionのようなことをします(コールバックという名前のvarで) callback()
違いは、関数参照を渡すこととその関数を呼び出すことです。
最初のケース (おそらく正しい) は、イベントが発生したときにこの関数を呼び出すことを意味します。
2 番目は次のように解釈されます: この関数をすぐに呼び出し、返されたものは何でもコールバックとして使用します。後で呼び出すことができる関数の方がよいでしょう。
後者のケースは、関数が次のように定義されている場合にのみ機能します。
function anotherFunction() {
return function() {
//real handler
}
}