Pętle mogą wykonywać blok kodu wiele razy. Przy testowanu uważaj byś nie zrobił nieskończonej pętli - możesz unieruchomić przeglądarkę. Rodzaje pętli:
for (instr1_przed; warunek2; instr3_po) {
// blok kodu do wykonania
}
Wszystkie instrukcje sa opcjonalne ale średniki zostają.
1 - instrukcja wykonywana (jeden raz) przed wykonaniem bloku kodu, listę oddzielamy przecinkiem
zazwyczaj w niej inicjujemy zmienną używaną w pętli (ale jeśli zrobiłeś to przed pętlą to możesz pominąć)
2 - określa warunek wykonania bloku kodu
najczęściej bada stan zmiennej początkowej, jeśli pominiesz tę instrukcję musisz zapewnić jakoś wyjście z pętli by nie byłą nieskończona.
3 - instrukcja wykonywana (za każdym razem) po wykonaniu bloku kodu, listę oddzielamy przecinkiem
często zmienia ona stan zmiennej początkowej (np. i++), jeśli ją pominiesz musisz to zrobić w bloku kodu do wykonania
for (i=0; i<3; i++) alert("Hej");
Przykład z pominięciem instrukcji przed i po:
var i = 0;
for (; i < 5; ) {
alert(i);
i++;
}
for... in iteruje po wszystkich niesymbolicznych, wyliczalnych właściwościach obiektu
Składnia:for (zmienna in obiekt) polecenieW każdej iteracji, zmiennej przypisywana jest inna nazwa własności.
var osoba = {imie: "Jan", nazwisko: "Kowalski", wiek: 33};
var text1 = "";
var text2 = "";
for (i in osoba) {
text1 += i+ " ";
text2 += osoba[i]+ " ";
}
alert(text1); //zwróci: imie nazwisko wiek
alert(text2); //zwróci: Jan Kowalski 33
var osoba = ['Ala', 'Ola', 'Jan'];
var text1 = "";
var text2 = "";
for (i in osoba) {
text1 += i+ " ";
text2 += osoba[i]+ " ";
}
alert(text1); //zwróci: 0 1 2
alert(text2); //zwróci Ala Ola Jan
For... of zapętla wartości iterowalnych obiektów takich jak łańcuchy, tablice, mapy, listy węzłów itp.
Składnia:
for (zmienna of obiekt_iterowalny) polecenieW każdej iteracji zmiennej przypisywana jest wartość następnej właściwości.
var osoba = ['Ala', 'Ola', 'Jan'];
var text = "";
for (i of osoba) {
text += i+ " ";
}
alert(text); //zwróci Ala OLa Jan
Pętla jest wykonywana tak długo dopóki warunek jest spełniony (pradziwy)
while (warunek) {
//polecenia
}
Nie zapomnij o tym by jakaś zmienna miała wpływ na zakończenie pętli!
var text = "";
var i = 0;
while (i < 6) {
text += " " + i;
i++;
}
alert(text); //zwróci: 0 1 2 3 4 5
Podobna do while ale najpierw wykona blok kodu jeden raz, zanim sprawdzi, czy warunek jest spełniony, a następnie będzie powtórzać pętlę, dopóki warunek będzie spełniony.
Składnia:
do {
//polecenia
}
while (warunek)
Nie zapomnij o tym by jakaś zmienna miała wpływ na zakończenie pętli!
n = 0;
suma = 0;
do {
suma += n;
n ++;
}
while(n <= 11)
alert(suma);
//zwróci sumę cyfr od 0 do 10 (66)
pętlę while łatwo zamienić na pętlę for:
n = 0;
suma = 0;
for (; n <= 11; ) {
suma += n;
n ++;
}
alert(suma);
//zwróci sumę cyfr od 0 do 10 (66)
Instrukcja break powoduje wyskoczenie z pętli i wykonywanie kodu po niej.
Instrukcja continue powoduje przeskok jednej iteracji w pętli.
for (i = 0; i < 10; i++) {
if (i === 3) { continue; }
if (i === 7) { break; }
text += i + " ";
}
alert(text); //zwróci: 0 1 2 4 5 6
Aby opisać instrukcje JS poprzedzamy je nazwą etykiety i dwukropkiem:
label: {
instrukcje
}
Instrukcje breaki i continue są jedynymi instrukcjami JavaScript, które mogą „wyskoczyć” z bloku kodu.
Składnia:
break labelname; continue labelname;
Instrukcja continue (z lub bez odwołania do etykiety) może być użyta tylko do pominięcia 1 iteracji.
Instrukcja break bez odwołania do etykiety, może być używana tylko do wyskoczenia z pętli lub z instrukcji switch.
Instrukcja break za pomocą odwołania do etykiety może być użyta do wyskoczenia z dowolnego kodu bloku.
bloczek: {
text1 = "Ala";
text2 = "Ola";
text1 = text1 + " i " + text2;
break bloczek;
text1 = "XXXXXXXXXXXX";
}
alert(text1); //zwróci: Ala i Ola