Wie funktioniert eine Funktion in einer Schleife (die eine andere Funktion zurückgibt)? [Duplikat

Diese Frage hat hier bereits eine Antwort:

JavaScript-Verschluss in Schleifen - einfaches praktisches Beispiel 39 answers

Ich habe versucht, dem onclick-Ereignis eines dynamisch erstellten "a" -Tags in JavaScript eine Funktion zuzuweisen. Alle Tags werden in einer Schleife wie folgt erstellt:

for ( var i = 0; i < 4; i++ )
{
  var a = document.createElement( "a" );
  a.onclick = function( ) { alert( i ) };
  document.getElementById( "foo" ).appendChild( a );
}

Der Warnwert für alle vier Links ist immer "4". Ganz schön offensichtlich. Beim googeln bin ich auf einen Beitrag gestoßen, der den folgenden Codeausschnitt zeigt:

a.onclick = (function(p, d) {
return function(){ show_photo(p, d) }
})(path, description);

Ich habe es geschafft, es an meine Bedürfnisse anzupassen und habe die Warnmeldung (i) erhalten, damit sie korrekt funktioniert. Ich würde mich freuen, wenn jemand genau erklären könnte, was der obige Code bewirkt.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage