2023-03-15 10:55 Czas czytania: 13 min

Wyjaśnienie każdego typu pętli JavaScript: [With Codeblocks and Examples]

JavaScript to jeden z najpopularniejszych języków programowania, a jego opanowanie jest kluczowe dla aspirujących inżynierów oprogramowania. Znajomość pętli, ich rodzajów i działania stanowi fundament tej nauki.

Pętle w JavaScript umożliwiają wielokrotne wykonywanie fragmentów kodu w zależności od określonego warunku. Iteracja, czyli powtarzanie w kontekście pętli, trwa do momentu, aż warunek zakończenia zostanie spełniony. Pomyśl o tym, jak o serii ruchów w grze - wykonujesz określoną liczbę kroków w danym kierunku, aż osiągniesz cel.

Przykładowo, wykonanie siedmiu kroków na północ można zapisać w kodzie w następujący sposób:

for (let krok = 0; krok < 7; krok++) {

  // Wykona się 7 razy, z wartościami kroku od 0 do 6.

  console.log("Idę na północ o jeden krok");

}

Po uruchomieniu tego kodu, zobaczymy efekt w konsoli.

W jakim celu stosuje się pętle?

  • Powtarzanie zadań: Pętle pozwalają na wykonywanie zestawu instrukcji dopóki określone kryteria nie zostaną spełnione.
  • Przeglądanie obiektów i tablic: Dzięki pętlom można iterować przez właściwości obiektów lub elementy tablic, wykonując działania dla każdej z nich.
  • Filtrowanie danych: Pętle umożliwiają selekcję danych na podstawie określonych reguł.

W JavaScript istnieje kilka rodzajów pętli: for, while, do…while, for…in oraz for…of. Przyjrzyjmy się im bliżej, analizując ich działanie.

Pętla "for"

Pętla "for" powtarza instrukcje do momentu, aż warunek przestanie być spełniony. Składa się z trzech opcjonalnych wyrażeń, po których następuje blok kodu.

for (inicjalizacja; warunek; wyrażenie_końcowe) {

  // kod

}
  • Wyrażenie inicjalizujące jest wykonywane przed pierwszym przebiegiem pętli i służy zazwyczaj do inicjalizacji liczników.
  • Wyrażenie warunkowe jest sprawdzane przed każdym wykonaniem pętli. Kod w pętli jest wykonywany, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, pętla się kończy. Brak warunku domyślnie traktowany jest jako warunek prawdziwy.
  • Wyrażenie końcowe jest wykonywane po każdej iteracji i zazwyczaj służy do zwiększania wartości licznika.

Do grupowania instrukcji w bloku można użyć nawiasów klamrowych {}. Aby przerwać pętlę wcześniej, przed uzyskaniem warunku fałszywego, należy zastosować instrukcję "break".

Przykłady użycia pętli "for"

  • Iteracja za pomocą pętli "for":
  • for (let i = 0; i < 7; i++) {
    
      console.log(i);
    
    }

    W tym przypadku:

    • Zmienna "i" jest inicjalizowana wartością 0 (let i = 0).
    • Warunkiem jest, aby "i" było mniejsze niż 7 (i < 7).
    • Pętla będzie się powtarzać, dopóki wartość "i" nie będzie mniejsza niż 7.
    • Po każdej iteracji wartość "i" zostanie zwiększona o 1 (++i).

  • Użycie "break" do wcześniejszego zakończenia pętli:
  • for (let i = 1; i < 11; i += 2) {
    
      if (i === 9) {
    
        break;
    
      }
    
      console.log('Liczba programistów: ' + i);
    
    }
    • Kod iteruje od 1 do 10 (i < 11).
    • Zmienna "i" jest inicjalizowana wartością 1 (let i = 1).
    • Pętla trwa dopóki "i" jest mniejsze od 11.
    • Wartość "i" wzrasta o 2 po każdym przebiegu (i += 2).

    Instrukcja "if" sprawdza, czy wartość "i" wynosi 9. Jeśli tak, to "break" przerywa działanie pętli.

    (obraz)

    Pętla "for...of"

    Pętla "for...of" iteruje po obiektach iterowalnych, takich jak mapy, tablice, argumenty i zbiory. Wywołuje niestandardowy hak iteracji z instrukcjami wykonywanymi dla każdej wartości danego obiektu.

    Podstawowa struktura pętli "for...of" to:

    for (zmienna of obiekt)
    
      instrukcja

    Przykłady użycia pętli "for...of"

  • Iteracja po tablicy za pomocą "for...of":
  • const jezykiFrontend = [ "HTML", "CSS", "JavaScript" , "React"];
    
    for (let i of jezykiFrontend) {
    
      console.log(i);
    
    }

    W tym kodzie:

    • Definiujemy tablicę o nazwie "jezykiFrontend".
    • Tablica zawiera elementy: "HTML", "CSS", "JavaScript" i "React".
    • Pętla "for...of" iteruje po każdym elemencie w tablicy.
    • Zmienna "i" przyjmuje wartość kolejnych elementów podczas każdej iteracji, a następnie te wartości są wyświetlane w konsoli.

  • Iteracja po zbiorze za pomocą "for...of":
  • const s = new Set();
    
    s.add(2);
    
    s.add("szary");
    
    for (let n of s) {
    
      console.log(n);
    
    }

    W tym fragmencie kodu:

    • Deklarujemy zmienną "s", do której przypisujemy nowy zbiór utworzony za pomocą konstruktora "Set()".
    • Do zbioru dodajemy dwa elementy za pomocą metody "add()".
    • Pętla "for...of" iteruje po elementach zbioru.
    • Pętla przypisuje wartość bieżącego elementu do "n" przed wykonaniem instrukcji "console.log(n)".

  • Iteracja po mapie za pomocą "for...of":
  • const m = new Map();
    
    m.set(4, "królik");
    
    m.set(6, "małpa");
    
    m.set(8, "słoń");
    
    m.set(10, "lew");
    
    m.set(12, "leopard");
    
    for (let n of m) {
    
      console.log(n);
    
    }

    W tym bloku kodu:

    • Używamy konstruktora "Map()" do stworzenia nowego obiektu "Map".
    • Deklarujemy zmienną "m".
    • Dodajemy pięć par klucz-wartość za pomocą metody ".set()".
    • Pętla "for...of" iteruje po elementach obiektu "Map" o nazwie "m".

    Pętla "for...in"

    Pętla "for...in" służy do iterowania po właściwościach obiektu. Podstawowa struktura pętli "for...in" wygląda następująco:

    for (właściwość in obiekt) {
    
      // kod
    
    }

    Pętlę "for...in" można wykorzystać do iterowania po tablicach i obiektach przypominających tablice.

    const listaZakupow = { jarmuz: 4, pomidory: 2, kapusta: 0, salata: 6, dynia: 5 };
    
    for (const warzywo in listaZakupow) {
    
      console.log(warzywo);
    
    }

    W tym przykładzie:

    • Tworzymy obiekt JavaScript o nazwie "listaZakupow".
    • Używamy pętli "for" do iterowania po każdej właściwości "listaZakupow" za pomocą operatora "in".
    • W każdej iteracji pętla przypisuje bieżącą nazwę właściwości z obiektu "listaZakupow".

    Pętla "while"

    Pętla "while" sprawdza warunek, a jeśli jest on prawdziwy, wykonuje blok kodu. Jeśli warunek jest fałszywy, pętla kończy działanie, a kod w jej bloku nie jest wykonywany.

    Podstawowa struktura pętli "while" to:

    while (warunek)
    
        instrukcja

    Warunek musi zostać sprawdzony przed wykonaniem instrukcji w pętli. Można wykonać kilka instrukcji, używając nawiasów klamrowych {} lub instrukcji blokowych.

    Przykład użycia pętli "while"

    let n = 0;
    
    while (n < 9) {
    
      console.log(n);
    
      n++;
    
    }

    W tym kodzie:

    • Zmienna "n" jest inicjalizowana wartością zero (let n = 0).
    • Pętla będzie wykonywana, dopóki wartość "n" będzie mniejsza niż 9 (n < 9).
    • Wartość "n" jest wyświetlana w konsoli i zwiększana o 1 po każdej iteracji (n++).
    • Kod przestanie działać, gdy "n" osiągnie wartość 9.

    Pętla "do...while"

    Pętla "do...while" wykonuje iterację, dopóki warunek nie zostanie oceniony jako fałszywy.

    Ogólna struktura instrukcji "do...while" jest następująca:

    do
    
      instrukcja
    
    while (warunek);

    Instrukcja jest wykonywana raz, a następnie sprawdzany jest warunek. Instrukcja zostanie ponownie wykonana, jeśli warunek jest prawdziwy. W przeciwnym razie wykonywanie pętli zostanie zatrzymane, a sterowanie przejdzie do instrukcji następującej po "do...while". Kod w pętli "do...while" gwarantuje wykonanie co najmniej raz, nawet jeśli warunek początkowo ma wartość false.

    Przykład użycia pętli "do...while"

    let n = 0;
    
    do {
    
      n += 1;
    
      console.log(n);
    
    } while (n < 7);

    W tym kodzie:

    • Tworzymy zmienną "n" i ustawiamy jej wartość początkową na 0 (let n = 0).
    • Zmienna "n" wchodzi do pętli "do...while", gdzie jej wartość jest zwiększana o 1 po każdej iteracji (n += 1).
    • Wartość "n" jest wyświetlana w konsoli.
    • Pętla będzie wykonywana, dopóki wartość "n" będzie mniejsza niż 7 (n < 7).

    Po uruchomieniu tego kodu, konsola wyświetli wartości "n" od 1 do 7, ponieważ pętla wykona się 7 razy.

    Zagnieżdżone pętle

    Zagnieżdżona pętla to sytuacja, w której jedna pętla znajduje się wewnątrz innej. Na przykład, możemy mieć pętlę "for" zagnieżdżoną w innej pętli "for".

    for (let zewnętrzna = 0; zewnętrzna < 5; zewnętrzna += 2) {
    
      for (let wewnętrzna = 0; wewnętrzna < 6; wewnętrzna += 2) {
    
        console.log(`${zewnętrzna}-${wewnętrzna}`);
    
      }
    
    }
    • Istnieją dwie zmienne: "zewnętrzna" i "wewnętrzna", obie zainicjowane wartością zero.
    • Obie zmienne są zwiększane o 2 po każdej iteracji.
    • Zarówno pętla zewnętrzna, jak i wewnętrzna wykonują po trzy iteracje.

    Instrukcje sterujące pętlą

    Instrukcje sterujące pętlą, zwane też "instrukcjami skoku", przerywają normalny przebieg programu. Przykłady to instrukcje "break" i "continue".

    Instrukcja "break"

    Instrukcja "break" natychmiast przerywa działanie pętli, nawet jeśli warunek nie został jeszcze spełniony.

    for (let n = 1; n <= 26; n++) {
    
      if (n === 13) {
    
        console.log("Pętla zatrzymuje się tutaj. Osiągnięto instrukcję 'break'");
    
        break;
    
      }
    
      console.log(n);
    
    }

    Kod po wykonaniu wyświetli:

    Instrukcja "continue"

    Instrukcja "continue" służy do pominięcia określonego bloku kodu i przejścia do następnej iteracji pętli.

    for (let n = 0; n <= 10; n++) {
    
      if (n === 5) {
    
        continue;
    
      }
    
      console.log(n);
    
    }

    Kod po wykonaniu wyświetli:

    Podsumowanie

    Powyżej przedstawiono najczęściej spotykane pętle w JavaScript oraz jego frameworkach i bibliotekach. Jak podkreślono, każdy typ pętli ma swoje specyficzne zastosowanie i zachowanie. Wybranie niewłaściwego typu pętli może prowadzić do błędów i nieoczekiwanego działania kodu.

    W przypadku korzystania z frameworka lub biblioteki JavaScript, zawsze należy dokładnie sprawdzać jej dokumentację i wykorzystywać wbudowane w nią pętle.

    Marta Wysocka
    Autor
    Polska

    Przygotowuje podsumowania oparte na researchu, pomagające czytelnikom w decyzjach.

    Poprzedni artykuł
    Jak odwrócić zdjęcie na iPhonie [2023]
    Następny artykuł
    Wprowadzenie nowych nakryć głowy Apple, narzędzi Google AI i GPT-4