Maison > Article > interface Web > ## D'où viennent les paramètres dans les fonctions de rappel JavaScript ?
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 :
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!