for each...in

Czytasz angielską wersję tego artykułu, ponieważ nie ma jeszcze tłumaczenia dla tego języka. Pomóż nam przetłumaczyć ten artykuł!

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
for each...in
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox No support 1.5 — 57IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android No support 4 — 57Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

No support  
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.

Zobacz też

  • for...in – podobne wyrażenie, iterujące po nazwach własności;
  • for...of – podobne wyrażenie, iterujące po wartościach własności, którego można jednak używać dla typów iterowalnych, a więc nie dla obiektówgenerycznych;
  • for.