ホームページ > 記事 > ウェブフロントエンド > ## JavaScript コールバック関数のパラメータはどこから来るのでしょうか?
JavaScript コールバック関数のパラメーターの起源を理解する
JavaScript では、特定のイベントが発生するまで実行を延期するためにコールバック関数がよく使用されます。ただし、コールバック関数の変数のソースは不可解に見えるかもしれません。次の Node.js コードを例として使用して、コールバック関数とそのパラメータの起源を詳しく見てみましょう:
router.get('/', function(req, res){ res.render('index', {}); });
「req」変数と「res」変数はどのように設定されますか?
予想に反して、'req' と 'res' はコールバック関数自体の中で定義されていません。代わりに、それらは、それを呼び出す関数 (この場合は 'router.get') から取得されます。
コールバック関数を使用して 'router.get' が呼び出されると、その関数に 2 つの引数が渡されます。
呼び出し時間とパラメータの起源
コールバック関数は次のようなものであることを覚えておくことが重要です。定義されてもすぐには実行されません。代わりに、それらは後で、通常は関連付けられているイベントが発生したときに呼び出されます。この場合、HTTP GET リクエストが「/」エンドポイントに対して行われたときにコールバック関数が呼び出されます。
呼び出し時に、「router.get」に渡した関数が「req」で実行されます。および関数自体によって提供される「res」パラメータ。つまり、「req」変数と「res」変数はコールバック関数のスコープ内に存在せず、関数の呼び出し時に引数として渡されます。
「res」宣言を使用しない単純な例
このパラメータの受け渡しがどのように機能するかをさらに説明するために、「res」を明示的に宣言せずに「res.render」を呼び出す方法を示す簡略化された例を次に示します。
// Define a function to handle HTTP GET requests function handleGetRequest(req, res) { // Render the 'index' view using the data provided by the request res.render('index', {}); } // Register the handler with the router router.get('/', handleGetRequest);
この例では、HTTP GET リクエストを処理する別の関数 ('handleGetRequest') を作成しました。この関数は、「req」オブジェクトと「res」オブジェクトをパラメータとして受け取ります。 HTTP GET リクエストが「/」エンドポイントに対して行われると、ルーターは「handleGetRequest」関数を呼び出し、「req」オブジェクトと「res」オブジェクトを渡します。その後、関数はこれらのオブジェクトを使用してリクエスト情報にアクセスし、HTTP 応答を送信できます。
このアプローチは、コールバック関数内で 'res' を明示的に宣言する必要がないことを示しています。関数呼び出し時の引数。
以上が## JavaScript コールバック関数のパラメータはどこから来るのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。