mit anonymen Funktionen in javascript for-Schleifen

Habe ich gesehen, anonyme Funktionen innerhalb von for-Schleifen induzieren neuer Bereich auf der Website in einer oder zwei stellen und würde gerne wissen, ob es Sinn macht.

Beispiel:

var attr, colors = ['green','blue','red'];

for ( attr = 0; attr < colors.length; attr++) {
    (function() {
        var colorAttr = colors[attr];

        //do something with colorAttr
    })();
}

Verstehe ich, es hat etwas zu tun mit dem halten des Geltungsbereichs innerhalb der for-Schleife sauber, aber in welchen Situationen würde dies notwendig sein? Wäre es gute Praxis, dies zu tun, überall müssen Sie deklarieren Sie eine neue var innerhalb der for-Schleife?

  • Hier ist ein Beispiel, bei dem Verschluss in Schleifen sinnvoll: stackoverflow.com/questions/1552941/...
  • attr änderungen im Verlauf der Schleife, so dass, wenn Sie verwenden colors[attr] in einer callback-Funktion, die es nicht beziehen sich auf die colors[attr] Sie eigentlich wollen.
  • Ich verwende asynchrone Aufrufe nur, wenn etwas zu warten, um abzuschließen. In diesem Fall kann es problematisch sein, zu verfolgen, die colors[] änderungen.
  • so ein Muster wie diese machen mehr Sinn, wenn Sie anbringen, einen event-handler drin?
  • Dies ist nicht eine callback - es ist eine sofort ausgeführte Funktion. colorAttr den Gültigkeitsbereich, die sofort ausgeführte Funktion, aber es kann gehen bis zu den übergeordneten Bereich haben und gerne den Zugang attr.
  • so wäre es schlecht oder falsch üben, diese zu verwenden, wenn es nicht ein callback/event-handler beteiligt?
  • wahrscheinlich. Es sei denn, Sie sind sehr paranoid über Umfang und wirklich, wirklich nicht wollen, dass colorAttr decalred im gleichen Bereich wie attr und color. Aber in der Praxis, dass man wirklich nicht darauf ankommt, in gut entwickelte code. Wenn Sie nicht erstellen eine Funktion in einer Schleife, die Sie in der Regel nicht brauchen, um wickeln Sie es in eine Funktion wie diese.

InformationsquelleAutor Evan | 2012-12-20
Schreibe einen Kommentar