Frage

Was ist der Unterschied zwischen for..in und für each..in Aussagen in Javascript? Gebe es subtilen Unterschied, dass ich weiß nicht, oder ist es das gleiche und jeder Browser hat einen anderen Namen für das?

War es hilfreich?

Lösung

"für jeden ... in" iteriert eine bestimmte Variable über alle Werte des angegebenen Eigenschaft des Objekts.

Beispiel:

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;
}
print(sum); // prints "26", which is 5+13+8

Quelle

"für ... in" iteriert eine bestimmte Variable über alle Eigenschaften ein Objekt, in beliebiger Reihenfolge.

Beispiel:

function show_props(obj, objName) {
   var result = "";
   for (var i in obj) {
      result += objName + "." + i + " = " + obj[i] + "\n";
   }
   return result;
}

Quelle


Hinweis: 03.2013, for each... in Schleifen veraltet . Die 'neue' Syntax von MDN empfohlen for... of .

Andere Tipps

Diese Demonstration soll hoffentlich den Unterschied verdeutlichen.

var myObj = {
    a : 'A',
    b : 'B',
    c : 'C'
};
for each (x in myObj) {
    alert(x);        // "A", "B", "C"
}
for (x in myObj) {
    alert(x);        // "a", "b", "c"
    alert(myObj[x]); // "A", "B", "C"
}

Lesen Sie die ausgezeichnete MDC-Dokumentation.

Die erste für normal ist Schleifen über Sammlungen und willkürlich über die Eigenschaften eines Objekts.

  

A für ... in Schleife nicht übernimmt iterieren integrierten Eigenschaften. Dazu gehören alle integrierten Methoden von Objekten, wie String der indexOf Methode oder Object toString Methode. Allerdings wird die Schleife iteriert über alle benutzerdefinierten Eigenschaften (einschließlich der eingebauten im Überschreibeigenschaften).

     

A für ... in Schleife iteriert über die Eigenschaften eines Objekts in einer beliebigen Reihenfolge. Wenn eine Eigenschaft in einer Iteration modifiziert wird und dann zu einem späteren Zeitpunkt besuchte, wird der Wert durch die Schleife ausgesetzt wird sein Wert zu diesem späteren Zeitpunkt sein. Eine Eigenschaft, die gelöscht wird, bevor es wird nicht dann später besucht wurde werden. Eigenschaften hinzugefügt, um das Objekt über die Iteration auftritt entweder besucht oder von Iteration weggelassen werden kann. Im Allgemeinen ist es nicht hinzuzufügen, am besten, zu ändern oder entfernen Eigenschaften von dem Objekt während der Iteration, außer dem Objekt besucht wird; gibt es keine Garantie, ob eine zusätzliche Eigenschaft besucht werden, ob eine modifizierte Immobilie besichtigt werden, bevor oder nachdem es geändert wird, oder ob ein gelöschtes Objekt besucht haben wird, bevor es gelöscht wird.

Die letztere können Sie Schleife über Eigenschaften eines Objekts.

  

Iteriert einer bestimmten Variablen über alle Werte von Objekteigenschaften. Für jede einzelne Eigenschaft wird eine bestimmte Anweisung ausgeführt.

Zusätzlich zu den anderen Antworten, denken Sie daran, dass for each...in ist nicht Teil des ECMA-Standard und auch nicht in der kommende Ausgabe 3.1 . Es wurde in JavaScript 1.6 eingeführt, die von der Mozilla Foundation ein Erweiterung von ECMAScript3 ist.

Nach der verlinkten Wikipedia-Seite, ist es nur in Firefox implementiert 1.5+ und Safari 3.x (+?).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top