javascript: Mit der aktuellen for-Schleife Zähler-Wert innerhalb einer Funktion() { }?
auf einer website möchte ich dies tun: (vereinfacht)
myHandlers = new Array();
for(var i = 0; i < 7; i++) {
myHandlers.push(new Handler({
handlerName: 'myHandler'+i, //works, e.g. ->myHandler1, 2, 3 etc.
handlerFunc: function(bla) { /*...*/ alert(i); } //doesn't work,all return 7
}
}
Konnte ich den Zähler als ein weiteres Attribut von meinem Handler (die Kopie des aktuellen Wertes) und verwenden Sie es innerhalb meiner Funktion, aber ich denke, es ist auch ein Weg, um tatsächlich kopieren Sie diesen Wert, Nein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn handlerFunc heißt, die
i
innerhalb der Funktion bezieht sich auf diei
desfor
Schleife. Aber dasi
hat wahrscheinlich nicht den gleichen Wert haben, nicht mehr.Verwenden Sie einen Verschluss zum binden der aktuelle Wert von
i
im Rahmen einer anonymen Funktion:Hier eine anonyme Funktion
(function(i) { … })(i)
verwendet wird und sofort aufgerufen. Diese Funktion bindet den Wert deri
desfor
- Schleife, um die lokaleni
. Dassi
ist dann unabhängig von deri
desfor
Schleife.Verwenden Sie einen Verschluss zum binden der
i
so dass der Wert erhalten bleibtIn deinem Beispiel
i
in den Funktionen ist die gleiche variable wiei
außerhalb der Funktionen. Alsi
erhöht wird, in der Schleife, so ist es erhöht, innerhalb der Funktionen. Als Ergebnis, wenn die Funktionen aufgerufen werden, nachdem die Schleife beendet ist, werden Sie alle alert - "7".Müssen Sie erstellen eine neue variable mit dem geeigneten Gültigkeitsbereich und kopieren Sie den Wert des
i
hinein.Etwas wie dieses würde sich der gewünschte Effekt.
i
. Ich bin immer noch Probleme beim wickeln meinem Kopf herum, die ganze Sache. Dies ist sehr einfach, prägnant und verständlich.