Cyklus for
Většina cyklů prochází nějakou řadu čísel: od 1 do 10 nebo třeba indexy pole. V cyklu while je takové počítání rozdělené na tři místa: proměnnou vytvoříte před cyklem, podmínka je nahoře a změna na konci bloku. Cyklus for (pro) soustředí všechny tři části na jeden řádek, takže na první pohled vidíte, jak cyklus počítá:
for (let i = 1; i <= 3; i++) {
console.log(i);
}Vypíše:
1
2
3Dělá přesně totéž jako tento cyklus while:
let i = 1;
while (i <= 3) {
console.log(i);
i++;
}V závorkách za for jsou tři části oddělené středníky:
let i = 1je začátek. Provede se jednou, před prvním průchodem, a vytvoří počítadloi.i <= 3je podmínka. Kontroluje se před každým průchodem. Dokud platí, blok se provede; jakmile přestane platit, cyklus skončí.i++je krok. Provede se po každém průchodu a posune počítadlo dál.
Pořadí je tedy: začátek, podmínka, blok, krok, podmínka, blok, krok… dokud podmínka neplatí. Části se oddělují středníky, ne čárkami. S čárkami dostanete chybu SyntaxError.
Počítadlo se obvykle jmenuje i (z anglického „index“), ale může mít jakýkoli název. Krok může být jakákoli změna: i += 2 počítá po dvou a i-- počítá pozpátku:
for (let i = 3; i > 0; i--) {
console.log(i);
}3
2
1Proč let, a ne const? Počítadlo je jedna proměnná, kterou krok po každém průchodu změní: i++ ji změní z 1 na 2 a pak na 3. Proměnnou vytvořenou pomocí const změnit nejde, takže for (const i = 1; i <= 3; i++) vypíše 1 a pak skončí chybou TypeError: Assignment to constant variable.
Který cyklus kdy použít? for, když víte, kolikrát se cyklus provede: od 1 do 10 nebo jednou pro každý prvek pole. while, když to předem nevíte, například když chcete číslo zdvojnásobovat, dokud nebude větší než 1000:
let cislo = 1;
let pocetZdvojnasobeni = 0;
while (cislo <= 1000) {
cislo = cislo * 2;
pocetZdvojnasobeni++;
}
console.log("Zdvojnásobení:", pocetZdvojnasobeni);
console.log("Číslo:", cislo);Zdvojnásobení: 10
Číslo: 1024Jak psát:
Pokyny
Přepište cyklus while z editoru na cyklus for a cyklus while smažte. Program bude dál vypisovat čísla od 1 do 5.
Změňte svůj cyklus for tak, aby vypsal čísla od 15 do 20 včetně.