Heim  >  Artikel  >  Web-Frontend  >  Warum benötigen Event-Handler in JavaScript-Schleifen Abschlüsse?

Warum benötigen Event-Handler in JavaScript-Schleifen Abschlüsse?

Barbara Streisand
Barbara StreisandOriginal
2024-11-06 15:44:02461Durchsuche

Why Do Event Handlers in JavaScript Loops Need Closures?

Ereignishandler in JavaScript-Schleifen: Die Notwendigkeit von Abschlüssen

In JavaScript kann es bei der Arbeit mit Ereignishandlern innerhalb von Schleifen erforderlich sein Implementieren Sie Abschlüsse, um eine ordnungsgemäße Parameterübergabe sicherzustellen. Betrachten Sie den folgenden Code:

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

Wenn in diesem Szenario das onchange-Ereignis ausgelöst wird, sind die an onStatusChanged() übergebenen Werte in allen -Element), c (die aktuelle Callid) und a (die aktuelle Anotherid)

  • Der Abschluss ruft sofort auf die Funktion und übergibt die aktuellen Werte von s, c und a
  • Wenn das onchange-Ereignis ausgelöst wird, werden die Abschlüsse ausgeführt, um sicherzustellen, dass onStatusChanged() die richtigen Werte für jeden