Maison > interface Web > js tutoriel > le corps du texte

Pourquoi les gestionnaires d'événements dans les boucles JavaScript ont-ils besoin de fermetures ?

Barbara Streisand
Libérer: 2024-11-06 15:44:02
original
527 Les gens l'ont consulté

Why Do Event Handlers in JavaScript Loops Need Closures?

Gestionnaires d'événements dans des boucles JavaScript : le besoin de fermetures

En JavaScript, lorsque vous travaillez avec des gestionnaires d'événements dans des boucles, il peut être nécessaire de implémentez des fermetures pour garantir le passage correct des paramètres. Considérez le code suivant :

<code class="javascript">for (var i = 0; i < blah.length; i++) {
  var select = document.createElement('select');
  select.onchange = function() {
    onStatusChanged(select, callid, anotherid);
  };
}
Copier après la connexion

Dans ce scénario, lorsque l'événement onchange se déclenche, les valeurs transmises à onStatusChanged() sont cohérentes dans tous les fichiers ), c (l'identifiant actuel) et a (l'autre identifiant actuel)

  • La fermeture appelle immédiatement la fonction, transmettant les valeurs actuelles de s, c et a
  • Lorsque l'événement onchange se déclenche, les fermetures s'exécutent, garantissant que onStatusChanged() reçoit les valeurs correctes pour chaque