for. . . of
Przechodzi po kolejnych wartościach obiektu iterowalnego: tablicy, napisu, Map, Set i innych.
Przykład
#const skills = ['HTML', 'CSS', 'JavaScript']
for (const skill of skills) {
console.log(`Uczę się: ${skill}`)
}Definicja i zastosowanie
#Pętla for...of w każdym obrocie podaje kolejną wartość z obiektu iterowalnego. Nie musisz zarządzać licznikiem ani sięgać po element przez indeks, więc kod jest krótszy i trudniej o błąd „o jeden”.
Działa z tablicami, napisami (znak po znaku, bez rozcinania emoji na połówki), obiektami Map i Set, listami z querySelectorAll() czy generatorami. Zwykły obiekt {} nie jest iterowalny, więc po jego zawartości przejdziesz przez Object.keys(), Object.values() albo Object.entries().
W przeciwieństwie do forEach() w for...of możesz używać break, continue, return i await. Gdy potrzebujesz też indeksu, użyj array.entries() z destrukturyzacją: for (const [index, value] of array.entries()).
Składnia
#for (const element of iterable) {
// instrukcje
}Więcej przykładów
#const tasks = ['Zmienne', 'Pętle', 'Funkcje']
for (const [index, task] of tasks.entries()) {
console.log(index, task)
}const scores = { Ania: 120, Kuba: 95 }
for (const [name, points] of Object.entries(scores)) {
console.log(`${name} ma ${points} pkt`)
}const word = 'Kod👾'
for (const char of word) {
console.log(char)
}
console.log(word.length)for...of przechodzi po całych znakach Unicode, dlatego emoji jest jednym elementem, choć length liczy je jako 2.
Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#for...ofdaje wartości, afor...inklucze. Do tablic prawie zawsze chceszfor...of.- Z
awaitwewnątrz pętli operacje wykonają się po kolei. Aby uruchomić je równolegle, zbierz obietnice w tablicy i użyjPromise.all(). - Deklaruj zmienną pętli przez
const. Każdy obrót dostaje nową zmienną, a przypadkowe nadpisanie od razu zgłosi błąd.
Powiązane hasła
#- for...inPrzechodzi po nazwach wyliczalnych właściwości obiektu, także tych odziedziczonych z prototypu.
- forPętla z licznikiem: inicjalizacja, warunek i krok. Powtarza blok kodu, dopóki warunek jest prawdziwy.
- Object.entries()Zwraca tablicę par [klucz, wartość] obiektu.
- DestrukturyzacjaDestrukturyzacja (destructuring) wyciąga wartości z tablic i obiektów prosto do osobnych zmiennych.
- MapKolekcja par klucz i wartość, w której kluczem może być dowolna wartość, a kolejność dodawania jest zachowana.
- SetKolekcja unikalnych wartości: każda wartość może wystąpić w zbiorze tylko raz.
Widzisz błąd albo brakuje przykładu? Napisz do nas.