Maison >interface Web >js tutoriel >Pourquoi les gestionnaires d'événements dans les boucles JavaScript ont-ils besoin de fermetures ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 15:44:02533parcourir

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

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