1

以前に関数を定義した場合、成功のコールバックに使用することを指定するときに括弧を含める必要がありますか?

私がした場合の違いは何ですか?

のように

function fish_food(){//do something}

$.ajax({
    url: '/',
    success: fish_food
});

また

$.ajax({
    url: '/',
    success: fish_food()
});
4

7 に答える 7

5

fish_food単独で (括弧なしで) 関数オブジェクトへの参照として機能します。これにより、後で呼び出されるように関数への参照を渡すことができます。

fish_food()(括弧付き) は、関数を実行させる関数呼び出し式です。関数コードが評価され、オプションで値が返されて実行されます。

提供した AJAX コード (およびコールバックを含むすべての非同期 JavaScript) を使用して、fish_foodバージョン (括弧なし) を使用する必要があります。これにより、成功関数への参照が AJAX コードに渡され、AJAX コードがサーバーへの往復を完了すると、非同期的に実行されます。

于 2012-08-28T17:28:48.630 に答える
4

いいえ。

括弧は、関数fish_foodをすぐに実行する必要があり、値をsuccessプロパティに返す必要があることをブラウザに通知します。

于 2012-08-28T17:22:57.653 に答える
0

ノーパレンバージョンが必要です。その理由は、括弧はJavaScriptに名前で関数を参照するのではなく、すぐに関数を実行するように指示しているため、successコールバックは実際にfish_food()はAJAX呼び出しを実行しているときはいつでも呼び出した結果になります(これはおそらくエラーになります)undefined)。

于 2012-08-28T17:22:33.233 に答える
0

これはうまくいくでしょう

$.ajax({
    url: '/',
    success: fish_food
});
于 2012-08-28T17:23:03.437 に答える
0

かっこは必要ありません。parensを使用すると関数が呼び出されます。必要なのは、C /C++の関数ポインターに相当する名前だけです。

于 2012-08-28T17:23:04.980 に答える
0

括弧を付けると、関数がその場で実行されます。そのため、最初のバージョンが必要です。そうでない場合、成功すると関数の戻り値が格納されます。

于 2012-08-28T17:23:28.780 に答える
0
$.ajax({
    url: '/',
    success: fish_food
});

正しい。

を使用するsuccess: fish_food()と、すぐに実行され、リターンは成功に設定されます。

于 2012-08-28T17:23:48.993 に答える