Mam dla Was taki drobiazg. Bo w sumie pierwotnie celem tego bloga było pisanie właśnie o drobiazgach. Mam dla Was dosyć rzadką praktykę wśród programistów wszechinternetów. Na co dzień raczej się z nią nie spotykamy. Na pewno kojarzysz instrukcję break
i raczej kojarzy ci się z przerywaniem pętli switch
. Mało kto wie, że możemy ją także wykorzystać do przerwania pętli for
!
Popatrzmy sobie na składnię instrukcji break
:
break [label]
I jak to teraz interpretować?
Label to opcjonalny parametr, który oznacza etykietę pętli, którą chcemy przerwać. Etykieta to dowolna nazwa pętli (jednocześnie poprawna zmienna) z dwukropkiem.
Otóż kiedy używamy samej instrukcji break
(bez etykiety) to przerywamy switch
(ofkors) lub najgłębszą, obecnie wykonywaną instrukcję for,
while, do-while
, a następnie kontynuujemy wykonywanie programu od miejsca za pętlą.
Kiedy używamy break
z etykietą, to przerywamy specyficzną instrukcję for,
while, do-while
o nazwie tej etykiety.
Prosta teoria, prosty przykład.
for (let i = 1; i < 10; i++) {
if (i == 6) {
break;
}
console.log(i); // 1 2 3 4 5
}
Outer:
for (let i = 1; i < 10; i++) {
console.log("i: " + i);
console.log(" j: ");
Inner:
for (let j = 1; j < 10; j++) {
if (j == 3) {
break Inner;
}
console.log(j + " ");
}
}
// Console:
// i: 1 j: 1 2
// i: 2 j: 1 2
// i: 3 j: 1 2
// i: 4 j: 1 2
// i: 5 j: 1 2
// i: 6 j: 1 2
// i: 7 j: 1 2
// i: 8 j: 1 2
// i: 9 j: 1 2
Skoro mówimy o break
, to warto też wspomnieć o continue
. Ta instrukcja z kolei powoduje przejście do następnej iteracji pętli.
for (let i = 0; i < 10; i++) {
if (i % 2 != 0)
continue;
console.log(i); // 0 2 4 6 8
}
A teraz powiedzcie, czy mi się zdaje, czy przerywanie pętli break
iem jest jakoś mało popularne? Dlaczego? Czy, w kontekście pętli for
, instrukcja break
to po prostu bezużyteczna konstrukcja, która nie ma swojego praktycznego zastosowania w życiu?