Maison  >  Article  >  interface Web  >  ## D'où viennent les paramètres dans les fonctions de rappel JavaScript ?

## D'où viennent les paramètres dans les fonctions de rappel JavaScript ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 11:04:29647parcourir

## Where Do The Parameters Come From In JavaScript Callback Functions?

Comprendre l'origine des paramètres dans les fonctions de rappel JavaScript

En JavaScript, les fonctions de rappel sont fréquemment utilisées pour différer l'exécution jusqu'à ce qu'un certain événement se produise. Cependant, la source des variables de la fonction de rappel peut paraître déroutante. Examinons l'anatomie des fonctions de rappel et leurs origines de paramètres, en utilisant le code Node.js suivant comme exemple :

router.get('/', function(req, res){
    res.render('index', {});
});

Comment les variables 'req' et 'res' sont-elles renseignées ?

Contrairement à ce que l'on pourrait supposer, 'req' et 'res' ne sont pas définis dans la fonction de rappel elle-même. Au lieu de cela, ils proviennent de la fonction qui l'invoque, qui dans ce cas est « router.get ».

Lorsque « router.get » est invoqué avec une fonction de rappel, il transmet deux arguments à cette fonction :

  1. Objet de requête (« req ») : cet objet contient des informations sur la requête HTTP, telles que les en-têtes, les paramètres de requête et l'URL demandée.
  2. Objet de réponse («res») : Cet objet permet d'envoyer une réponse HTTP au client. Il fournit des méthodes pour définir les codes d'état, envoyer des données et gérer les en-têtes.

Durée d'appel et origine des paramètres

Il est crucial de se rappeler que les fonctions de rappel sont pas exécutés immédiatement lorsqu’ils sont définis. Ils sont plutôt invoqués ultérieurement, généralement lorsque l'événement auquel ils sont associés se produit. Dans ce cas, la fonction de rappel est invoquée lorsqu'une requête HTTP GET est adressée au point de terminaison '/'.

Au moment de l'invocation, la fonction que vous avez transmise à 'router.get' est exécutée avec le 'req' et les paramètres 'res' fournis par la fonction elle-même. En d'autres termes, les variables 'req' et 'res' ne sont pas présentes dans la portée de la fonction de rappel mais sont plutôt transmises en tant qu'arguments lorsque la fonction est invoquée.

Exemple simplifié sans déclaration 'res'

Pour illustrer davantage le fonctionnement de ce passage de paramètres, voici un exemple simplifié qui montre comment vous pouvez appeler 'res.render' sans déclarer explicitement 'res' :

// 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);

Dans cet exemple, nous avons créé une fonction distincte (« handleGetRequest ») qui gère les requêtes HTTP GET. Cette fonction prend les objets 'req' et 'res' comme paramètres. Lorsqu'une requête HTTP GET est adressée au point de terminaison '/', le routeur invoque la fonction 'handleGetRequest' et lui transmet les objets 'req' et 'res'. La fonction peut ensuite utiliser ces objets pour accéder aux informations de la demande et envoyer une réponse HTTP.

Cette approche démontre que vous n'avez pas besoin de déclarer explicitement « res » dans la fonction de rappel tant qu'elle est transmise en tant que argument lorsque la fonction est invoquée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn