Wyrażenie for each...in
jest przestarzałe jako część standardu ECMA-357 (E4X), gdyż E4X nie jest już wspierany. Zamiast tego, rozważ użycie wyrażenia for...of.
Firefox obecnie ostrzega przed użyciem for each...in
i wyrażenie to nie będzie działało od wersji Firefox 57.
Zobacz Warning: JavaScript 1.6's for-each-in loops are deprecated dla pomocy przy migracji do nowego standardu.
Wyrażenie for each...in
iteruje daną zmienną po wszystkich wartościach własności obiektu (ang. object's properties). Podane wyrażenie jest wykonywane dla każdej oddzielnej własności.
Składnia
for each (zmienna in obiekt) { polecenie }
zmienna
- Zmienna do iteracji po wartościach własnośic, opcjonalnie deklarowana ze słowem kluczowym
var
. Zmienna jest lokalna dla funkcji, a nie pętli.
obiekt
- Obiekt, po którego własnościach iterujemy.
polecenie
- Polecenie do wykonania dla każdej własności. Do wykonania wielu poleceń należy użyć wyrażenia block (
{ ... }
), w celu zgrupowania tychże poleceń.
Opis
Niektóre z wbudowanych własności nie są iterowalne – do tej grupy zaliczają się wszystkie wbudowane metody obiektów, jak na przykład metoda indexOf
obiektów klasy String
. Możliwe jest jednakże iterowanie po wszystkich własnościach zdefiniowanych przez użytkownika.
Przykłady
Użycie for each...in
Ostrzeżenie: Nigdy nie używaj takich pętli na tablicach. Wykorzystuj to tylko na obiektach. Po więcej szczegółów, przeczytaj opis wyrażenia for...in
.
Następujący fragment kodu iteruje po własnościach obiektu, obliczając ich sumę:
var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
sum += item;
}
console.log(sum); // logs "26", which is 5+13+8
Specyfikacje
To wyrażenie nie jest częścią aktualnej specyfikacji ECMA-262 specification. Zaimlementowane w JavaScript 1.6 i obecnie przestarzałe.
Wsparcie przeglądarek
No compatibility data found. Please contribute data for "javascript.statements.for_each_in" (depth: 1) to the MDN compatibility data repository.