Pętla for w JavaScript - Pełny przewodnik i przykłady

Pętla for w JavaScript: definicja zmiennej, warunek i modyfikacja wartości. Kod wyświetla liczby od 5 do 29.

Napisano przez

Jacek Zając

Opublikowano

28 maj 2026

Spis treści

Pętla for to jeden z tych elementów JavaScript, które bardzo szybko przydają się w realnym kodzie: od przechodzenia po tablicach, przez budowanie list w interfejsie, aż po proste operacje na licznikach. W tym tekście pokazuję, jak działa, jak ją zapisać poprawnie, kiedy wybrać ją zamiast while, for...of albo for...in oraz jakie błędy psują ją najczęściej. Skupię się na praktyce, bo właśnie przy pętli liczy się nie definicja, tylko to, czy kod jest czytelny i działa bez niespodzianek.

Najważniejsze rzeczy o pętli for w JavaScript

  • for sprawdza się wtedy, gdy chcesz wykonać blok kodu wielokrotnie i kontrolujesz licznik albo zakres iteracji.
  • Składnia ma trzy części: inicjalizację, warunek i krok po każdej iteracji.
  • Do iteracji po wartościach tablic często czytelniejsze jest for...of, a do kluczy obiektów for...in.
  • Najczęstszy błąd to pomyłka o jeden krok, czyli klasyczny problem z indeksem końcowym.
  • Jeśli pętla ma indeks, niestandardowy krok albo ma się zatrzymywać wcześniej, klasyczne for zwykle jest najlepszym wyborem.

Na czym polega pętla for w JavaScript

To konstrukcja do powtarzania tego samego bloku kodu określoną liczbę razy albo do momentu, gdy warunek przestanie być spełniony. Najczęściej używa się jej wtedy, gdy znamy indeks lub zakres iteracji: po tablicy, po ciągu liczb, przy generowaniu listy elementów albo przy przetwarzaniu danych z serwera. Jej przewaga jest prosta: wszystkie trzy elementy sterujące pętlą masz w jednym miejscu, więc od razu widać, od czego startujesz, kiedy kończysz i jak przesuwasz się do następnego kroku.

W praktyce to jedna z najbardziej przewidywalnych konstrukcji w JavaScript. Jeśli chcę szybko ocenić, czy kod jest zdrowy, patrzę właśnie na to, czy licznik, warunek i krok aktualizacji są zapisane jasno, bez sprytnych skrótów. To ważne, bo przy pętli łatwo o błąd o jeden krok za dużo albo za mało, a taki błąd potrafi zepsuć cały wynik. Żeby zobaczyć to bez zgadywania, rozbijmy składnię na części pierwsze.

Schemat ilustruje pętlę for...of w JavaScript, która iteruje przez elementy listy i zapisuje je za pomocą document.write(i).

Jak wygląda składnia i co oznacza każdy element

Konstrukcja pętli składa się z trzech pól w nawiasach: inicjalizacji, warunku i kroku wykonywanego po każdej iteracji. Każde z nich ma inne zadanie, a to właśnie ich kolejność decyduje o tym, czy pętla działa dokładnie tak, jak zakładasz.

for (let i = 0; i < 5; i++) {
  console.log(i);
}

let i = 0 tworzy licznik, i < 5 sprawdza, czy pętla ma wejść do kolejnej rundy, a i++ zwiększa licznik po każdym przebiegu. Zamiast i++ możesz też użyć i += 2, i -= 1 albo dowolnego kroku, jeśli chcesz przeskakiwać po danych inaczej niż co jeden element.

Warto pamiętać, że wszystkie trzy części są technicznie opcjonalne, ale w praktyce rzadko opłaca się z nich rezygnować. Gdy pominiesz warunek, dostajesz pętlę nieskończoną, więc to rozwiązanie ma sens tylko wtedy, gdy naprawdę kontrolujesz wyjście przez break. Teraz przejdę do tego, w jakiej kolejności przeglądarka wykonuje te kroki.

Jak działa krok po kroku

Logika działania jest prosta, ale opłaca się ją mieć w głowie, bo właśnie tu najłatwiej wyłapać błędy.

  1. Najpierw wykonywana jest inicjalizacja, czyli najczęściej ustawienie licznika na startową wartość.
  2. Potem JavaScript sprawdza warunek przed wejściem do każdej iteracji.
  3. Jeśli warunek jest prawdziwy, uruchamiane jest ciało pętli.
  4. Na końcu wykonuje się krok aktualizacji i dopiero wtedy następuje kolejna kontrola warunku.

Ta kolejność tłumaczy wiele pozornie dziwnych zachowań. Gdy w środku pętli użyjesz continue, reszta bieżącej iteracji zostanie pominięta, ale krok aktualizacji i tak się wykona. Z kolei break kończy pętlę od razu, bez kolejnego sprawdzania warunku. Ja zwykle polecam sięgać po te instrukcje wtedy, gdy naprawdę upraszczają kod, a nie jako automatyczny odruch. Jeśli pętla ma pracować na danych, najlepiej pokazać to na konkretnym przykładzie.

Przykłady, które naprawdę przydają się w kodzie

Najlepiej widać sens tej konstrukcji wtedy, gdy wychodzi poza sam licznik. Poniżej pokazuję trzy warianty, które regularnie przewijają się w praktyce front-endowej i w zadaniach szkoleniowych.

Przejście po tablicy z indeksem

const kursy = ["HTML", "CSS", "JavaScript"];

for (let i = 0; i < kursy.length; i++) {
  console.log(`${i + 1}. ${kursy[i]}`);
}

Ten wzorzec jest praktyczny, gdy potrzebujesz numeru elementu, a nie tylko jego wartości. Przy budowaniu list w HTML, numerowaniu kroków instrukcji albo walidacji danych indeks bywa równie ważny jak sama treść.

Sumowanie wartości

const liczby = [4, 8, 15, 16, 23, 42];
let suma = 0;

for (let i = 0; i < liczby.length; i++) {
  suma += liczby[i];
}

console.log(suma);

To dobry przykład sytuacji, w której for daje pełną kontrolę nad przebiegiem. Gdy liczy się prosty, jawny algorytm bez dodatkowych abstrakcji, klasyczna pętla pozostaje bardzo czytelna.

Przeczytaj również: Złożoność obliczeniowa - Czy Twój kod skaluje się dobrze?

Iteracja wstecz albo co kilka kroków

for (let i = 10; i >= 0; i -= 2) {
  console.log(i);
}

Taki zapis przydaje się przy odliczaniu, pracy na elementach od końca albo przy dzieleniu danych na porcje. To też dobry przykład na to, że for nie służy wyłącznie do liczenia od zera do końca tablicy.

Gdy umiesz już czytać takie przykłady, łatwiej porównać tę konstrukcję z innymi sposobami iteracji i wybrać rozwiązanie, które naprawdę pasuje do zadania.

Jak for wypada wobec while, for...of i for...in

Wybór pętli nie powinien być przypadkowy. Sam często patrzę na to, czy ważniejszy jest indeks, warunek, czy może tylko przejście po wartościach. To zwykle szybciej prowadzi do dobrego kodu niż trzymanie się jednej konstrukcji na siłę.

Konstrukcja Kiedy ma sens Mocna strona Typowe ryzyko
for Gdy potrzebujesz indeksu, niestandardowego kroku albo przerwania w połowie Pełna kontrola w jednym miejscu Błędy o jeden krok, zbyt rozbudowane ciało pętli
while Gdy liczba iteracji nie jest z góry znana Naturalne przy pętlach zależnych od warunku Łatwo zapomnieć o aktualizacji stanu
for...of Gdy chcesz przejść po wartościach tablicy, stringa, Map albo Set Czytelne iterowanie po wartościach Brak indeksu bez dodatkowej zmiennej
for...in Gdy chcesz przejść po kluczach obiektu Dobre do enumeracji właściwości Nie nadaje się do tablic, bo zwraca też właściwości obiektu

Jeśli iterujesz po tablicy i chcesz tylko wartości, for...of często wygląda lżej. Jeśli potrzebujesz kontroli nad indeksem, warunkiem i krokiem, klasyczne for nadal wygrywa. W przypadku obiektów for...in bywa użyteczne, ale przy tablicach wprowadza więcej zamieszania niż pożytku. Taki wybór konstrukcji oszczędza czas już w trakcie czytania kodu, a nie dopiero podczas debugowania.

Najczęstsze błędy, które psują pętlę

Większość problemów z for nie wynika z samej składni, tylko z drobnych przeoczeń. To dobra wiadomość, bo oznacza, że można ich uniknąć dość szybko.

  • i <= array.length zamiast i < array.length to klasyczny błąd o jeden krok. Przy <= ostatnia iteracja wychodzi poza zakres tablicy i dostajesz undefined.
  • Brak aktualizacji licznika prowadzi do pętli nieskończonej. Czasem problem jest banalny: i++ wylądowało w złym miejscu albo zostało usunięte przy refaktorze.
  • var zamiast let potrafi zaskoczyć zakresem widoczności. W nowym kodzie do licznika używam let, bo to blokowy zakres i mniej niespodzianek.
  • for...in użyte do tablicy zwykle kończy się słabym rezultatem, bo ta konstrukcja iteruje po nazwach właściwości, a nie po wartościach.
  • Za dużo logiki w ciele pętli sprawia, że kod trudno skontrolować. Jeśli blok robi pięć rzeczy naraz, zwykle warto wyciągnąć część pracy do osobnej funkcji.

Ja najczęściej zaczynam od sprawdzenia dwóch rzeczy: czy granica iteracji jest poprawna i czy licznik na pewno zmienia się w każdym przebiegu. To wystarcza, żeby wyłapać sporą część problemów zanim zaczną się bardziej złożone diagnozy. Dalej chodzi już głównie o czytelność.

Jak pisać pętle, które nadal da się czytać po miesiącu

W praktyce dobra pętla to nie tylko taka, która działa, ale też taka, którą po czasie da się szybko zrozumieć. To ważniejsze, niż wielu początkujących zakłada, bo kod żyje dłużej niż pierwszy commit.

  • Używaj czytelnych nazw, gdy sama litera i przestaje wystarczać. W prostych licznikach i jest w porządku, ale przy bardziej opisowych iteracjach lepsze bywa index, row albo day.
  • Trzymaj warunek zakończenia blisko licznika. Im mniej rozrzuconej logiki, tym mniejsze ryzyko błędu.
  • Nie komplikuj kroku aktualizacji bez potrzeby. Jeśli i += 3 tłumaczy się sam, to dobrze; jeśli wymaga komentarza, rozważ prostszy zapis albo osobny etap obliczeń.
  • Wybieraj for...of, jeśli nie potrzebujesz indeksu. Mniej szumu, mniej elementów do śledzenia.
  • Gdy ciało pętli rośnie, wyciągnij je do funkcji pomocniczej. Pętla ma sterować powtarzaniem, a nie mieszać w niej pół aplikacji.
  • Nie zakładaj, że for zawsze jest szybsze od innych rozwiązań. W realnych projektach o wiele częściej wygrywa czytelność niż mikrooptymalizacja.

Takie podejście zwykle daje lepszy efekt niż szukanie „najbardziej sprytnej” wersji. Jeżeli pętla jest krótka, logiczna i przewidywalna, to później łatwiej ją testować, rozwijać i przenosić do innego fragmentu aplikacji.

Kiedy zwykłe for ma największy sens

Najczęściej wybieram je wtedy, gdy potrzebuję indeksu, niestandardowego kroku albo możliwości przerwania iteracji w dowolnym momencie. To także dobry wybór, gdy uczysz się podstaw i chcesz naprawdę zobaczyć, jak działa mechanika pętli, zamiast ukrywać ją za skrótem składniowym.

Jeśli iteracja ma po prostu przejść po wartościach, bez żadnej dodatkowej kontroli, zwykle czytelniejsze będzie for...of. Gdy masz do czynienia z obiektem, a nie z tablicą, sensowny bywa for...in, ale tylko wtedy, gdy naprawdę chcesz przejrzeć właściwości. W codziennym kodzie klasyczne for nie jest najmodniejsze, ale nadal jest jednym z najbardziej uczciwych narzędzi: pokazuje dokładnie, co ma się wydarzyć i kiedy pętla ma się zatrzymać.

Jeśli zapamiętasz jedną rzecz, niech będzie prosta: trzymaj inicjalizację, warunek i krok aktualizacji w jednym miejscu, a pętla stanie się przewidywalna zamiast męcząca.

FAQ - Najczęstsze pytania

Pętla for to konstrukcja do powtarzania bloku kodu określoną liczbę razy lub do spełnienia warunku. Jest idealna, gdy znasz indeks lub zakres iteracji, np. do przechodzenia po tablicach, sumowania wartości czy generowania elementów UI.

Użyj pętli for, gdy potrzebujesz indeksu, niestandardowego kroku iteracji (np. co drugi element) lub możliwości przerwania pętli w dowolnym momencie. For...of jest lepsze do prostego iterowania po wartościach, a while, gdy liczba iteracji nie jest znana z góry.

Najczęstsze błędy to pomyłka o jeden krok (np. i <= array.length zamiast i < array.length), brak aktualizacji licznika (co prowadzi do pętli nieskończonej) oraz użycie var zamiast let, co może powodować problemy z zakresem widoczności zmiennych.

Nie zawsze. W realnych projektach czytelność kodu często przewyższa mikrooptymalizację. Choć for jest wydajne, wybór pętli powinien zależeć od kontekstu i tego, co sprawia, że kod jest najbardziej zrozumiały i łatwy w utrzymaniu.

Stosuj czytelne nazwy zmiennych (nie zawsze i), trzymaj warunek zakończenia blisko licznika i nie komplikuj kroku aktualizacji. Jeśli ciało pętli jest zbyt rozbudowane, wyciągnij logikę do osobnej funkcji, aby zwiększyć przejrzystość.

Oceń artykuł

Ocena: 0.00 Liczba głosów: 0

Tagi:

pętla for javascript pętla for w javascript przykłady for loop js kiedy używać pętli for

Udostępnij artykuł

Jacek Zając

Jacek Zając

Nazywam się Jacek Zając i od dziewięciu lat zajmuję się programowaniem webowym. Moja przygoda z tą dziedziną zaczęła się od fascynacji tworzeniem stron internetowych, co szybko przerodziło się w pasję do nauczania innych. Lubię dzielić się wiedzą i pomagać osobom, które stawiają pierwsze kroki w programowaniu. Skupiam się na wyjaśnianiu złożonych zagadnień w przystępny sposób, aby każdy mógł zrozumieć podstawy i rozwijać swoje umiejętności. W moich artykułach poruszam różnorodne tematy związane z programowaniem webowym, od HTML i CSS po JavaScript i frameworki. Dokładam wszelkich starań, aby informacje, które prezentuję, były rzetelne, aktualne i łatwe do przyswojenia. Regularnie śledzę nowinki w branży, co pozwala mi na dostarczanie czytelnikom treści zgodnych z najnowszymi trendami. Wierzę, że dobrze zorganizowana wiedza to klucz do sukcesu w karierze programisty.

Napisz komentarz