$(window).resize(myFunction());
すぐ通話myFunction
とresize
に戻り値を渡します。関数名/参照の後にかっこを追加すると関数が呼び出されます。
一方、
$(window).resize(function(){myFunction()});
はresize
に匿名関数を通過します。 myFunction
は、外部関数が呼び出されたときにのみ呼び出されます。
無名関数は何も特別なものではありません。この場合は、のインライン関数定義のようなものです。あなたは簡単に機能を参照して、それを置き換えることができます。
var handler = function(){myFunction()}; // take out the function definition
$(window).resize(handler); // and replace it with the new name
今、あなたはhandler
が呼び出されない、参照のみが渡され、意味、何の括弧は、関数名の後に存在しないことがわかります。
この例で新しい関数を作成する必要はありません。
$(window).resize(myFunction);
しかし、両方の方法は、そのユースケースを持っている:あなたは、単に
myFunction
への参照を渡すことによって、同じことを達成することができます。
myFunction
に渡されたパラメータに依存
function myFunction() {
var handler = function() {};
return handler;
}
はたぶんハンドラは再調整:
myFunction
は、イベントハンドラとして使用されるべき機能を返す場合
最初の例$(window).resize(myFunction());
はまだ有用です。
あなたには、いくつかの特定の引数でmyFunction
を呼び出したい場合は、無名関数を渡すが必要である:
function myFunction(a, b) {
alert(a + b);
}
$(window).resize(function(){
myFunction(40, 2);
});
更新:
@T.J. Crowderはevent
objectに関する重要なコメントをしました。すべてのイベントハンドラは、最初のパラメータとして渡されたイベントオブジェクトを取得します。
function myFunction(event) {
...
}
がそれに(簡単に)アクセス、匿名関数を使用してを持っているとして、あなたの関数を定義したい場合は、それを通過しなければならない:
$(window).resize(function(event){myFunction(event)});
をあなたがそれを使用したい場合。
* "myFunction'への参照だけを渡すことで同じ結果を得ることができます:" *少し違います*。その場合、 'myFunction'は' event'引数を受け取りますが、 '$(window).resize(function(){myFunction()});'バージョンでは 'myFunction'は'イベント引数。 –