Skip to content

Latest commit

 

History

History
80 lines (60 loc) · 1.89 KB

for-of.md

File metadata and controls

80 lines (60 loc) · 1.89 KB

Pętla for...of

Instrukcja for...of tworzy pętlę, która iteruje obiekty iterowalne. For ... of loop został wprowadzony w ES6 jako alternatywa zarówno dla for...in, jak i forEach() i obsługuje nowy protokół iteracji. For...of pozwala na zapętlenie struktur danych, które są iterowalne, takich jak tablice, ciągi znaków, mapy, zestawy i inne.

for (variable of iterable) {
  statement
}
  • variable - dla każdej iteracji wartość właściwości jest przypisywana do zmiennej.
  • iterable - Obiekt, który ma wyliczalne właściwości i może być iterowany.

Tablice

Tablice są po prostu obiektami podobnymi do list. Array.prototype ma różne metody, które pozwalają na wykonywanie na nim operacji, takich jak mutacja i przechodzenie. Oto przykład zastosowania for...of na tablicy:

const iterable = ['mini', 'mani', 'mo'];

for (const value of iterable) {
  console.log(value);
}

// Output:
// mini
// mani
// mo

Ciągi znakowe

Ciągi służą do przechowywania danych w formie tekstowej. Przykład zastosowania for...of na ciągu znaków:

const iterable = 'javascript';

for (const value of iterable) {
  console.log(value);
}

// Output:
// "j"
// "a"
// "v"
// "a"
// "s"
// "c"
// "r"
// "i"
// "p"
// "t"

Tutaj iteracja wykonywana jest na łańcuchu, a znak na każdym indeksie jest drukowany.

Obiekty

Zwykłe obiekty nie są iterowalne. for...of loop działa tylko z obiektami iterowalnymi. Zwykłe obiekty nie są iterowalne. Spójrzmy:

const obj = { fname: 'foo', lname: 'bar' };

for (const value of obj) { // TypeError: obj[Symbol.iterator] is not a function
    console.log(value);
}

Definiujemy tutaj zwykły obiekt obj, a kiedy próbujemy wykonać na nim for..of, pojawia się błąd TypeError: obj[Symbol.iterator] is not a function.