Labelled Statements

Labelled Statements w JavaScript to technika, która pozwala nadać unikalną nazwę (etykietę) instrukcji lub bloku instrukcji. Dzięki temu można odwołać się do tych instrukcji w innej części kodu.

Wyobraź sobie, że jesteś na wielopoziomowym parkingu i każdy poziom ma swoją etykietę. Podobnie, w kodzie, możemy „nazwać” poszczególne bloki kodu, co ułatwia ich identyfikację i manipulację.

etykieta: instrukcja;

Zastosowanie z pętlami

Najczęstszym zastosowaniem Labelled Statements jest kontrola przepływu w pętlach zagnieżdżonych. Załóżmy, że masz pętlę wewnątrz innej pętli i chcesz przerwać obie pętle na raz. Zwykle break kończy tylko najbliższą pętlę, ale z etykietą możemy przerwać również zewnętrzną pętlę.

zewnętrznaPętla: for (let i = 0; i < 3; i++) {
	wewnętrznaPętla: for (let j = 0; j < 3; j++) {
		if (i === 1 && j === 1) {
			break zewnętrznaPętla;
		}
		console.log(`Iteracja ${i}, ${j}`);
	}
}

W tym przykładzie, gdy i oraz j są równe 1, pętla zewnętrznaPętla zostaje przerwana, co kończy również pętlę wewnętrznaPętla.

continue z etykietą

Podobnie jak break, continue również można używać z etykietami. continue etykieta powoduje, że pętla wznawia najbliższą kolejną iterację pętli oznaczonej daną etykietą.

Przykład z continue

zewnętrzna: for (let i = 0; i < 5; i++) {
	wewnętrzna: for (let j = 0; j < 5; j++) {
		if (j === 2) {
			continue zewnętrzna;
		}
		console.log(`Iteracja ${i}, ${j}`);
	}
}

Tutaj, gdy j osiąga wartość 2, pętla wewnętrzna jest przerywana i kontrola wraca do pętli zewnętrzna.

Kiedy stosować

Labelled Statements są przydatne w specyficznych sytuacjach, gdy mamy do czynienia z zagnieżdżonymi pętlami lub chcemy dokładnie kontrolować przepływ programu. Jednak ich nadużywanie może prowadzić do kodu trudnego do zrozumienia i utrzymania.

Używaj ich rozważnie i zanim sięgniesz po to rozwiązanie zastanów się dwa razy, czy na pewno nie da się danego problemu rozwiązać w inny sposób.

Masz pytania lub uwagi?

discord icon Przejdź na Discord
Masz pytanie? Napisz do nas 👇
kontakt@frontstack.pl
Copyright © 2023 Frontstack