Zdania break i continue ECMAScript
- Poprzednia strona Złożenie 'break'
- Następna strona Złożenie z 'with'
Instrukcje break i continue zapewniają bardziej rygorystyczną kontrolę nad wykonywaniem kodu w pętli.
Różnica między instrukcjami break i continue
Instrukcja break natychmiast wyjmuje z pętli, zapobiegając ponownemu wykonywaniu jakiegokolwiek kodu.
Instrukcja continue wyłącznie wyjmuje z bieżącej pętli, pozwalając na kontynuowanie następnego obiegu na podstawie wyrażenia kontrolnego.
Przykład:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { break; } iNum++; } alert(iNum); // Wyświetla "4"
W powyższym kodzie, pętla for iteruje zmienną i od 1 do 10. W ciele pętli, instrukcja if sprawdza (używając operatora modulo) czy wartość i jest podzielna przez 5. Jeśli jest, wykona się instrukcję break. alert wyświetli "4", co oznacza liczbę iteracji pętli przed wyjściem z pętli.
Jeśli zamiast instrukcji break w tym przykładzie użyjemy instrukcji continue, wynik będzie inny:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { continue; } iNum++; } alert(iNum); // Wyświetla "8"
Tutaj, alert wyświetli "8", co oznacza liczbę iteracji pętli. Maksymalna liczba wykonywanych pętli może wynosić 9, ale gdy wartość i wynosi 5, wykona się instrukcję continue, co spowoduje pominięcie wyrażenia iNum++ i powrót do początku pętli.
Używanie z złożeniami z etykietami
Złożenia 'break' i 'continue' mogą być używane razem z złożeniami z etykietami, aby wrócić do specyficznych miejsc w kodzie.
Zwykle, gdy wewnątrz pętli znajduje się jeszcze pętla, robi się to, na przykład:
var iNum = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (i == 5 && j == 5) { break outermost; } iNum++; } } alert(iNum); //Wypisanie "55"
W powyższym przykładzie, etykieta 'outermost' reprezentuje pierwsze złożenie 'for'. Normalnie, każdy złożenie 'for' wykona 10 razy blok kodu, co oznacza, że 'iNum++' normalnie powinien być wykonywany 100 razy, a po zakończeniu wykonywania, 'iNum' powinien być równy 100. W tym przypadku złożenie 'break' ma parametr, który oznacza, że po zakończeniu pętli ma przejść do etykiety złożenia. W ten sposób złożenie 'break' nie tylko może wyjść z wewnętrznej pętli (używającej zmiennej 'j'), ale również z zewnętrznej pętli (używającej zmiennej 'i'). Dlatego ostateczna wartość 'iNum' wynosi 55, ponieważ kiedy wartości 'i' i 'j' są równe 5, pętla zostanie zakończona.
Można używać złożenia 'continue' w ten sam sposób:
var iNum = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (i == 5 && j == 5) { continue outermost; } iNum++; } } alert(iNum); //Wypisanie "95"
W przykładzie powyżej, złożenie 'continue' zmusza pętlę do kontynuowania, nie tylko wewnętrzną pętlę, ale również zewnętrzną pętlę. Kiedy 'j' równa się 5, oznacza to, że wewnętrzna pętla zmniejszy się o 5 iteracji, co prowadzi do wartości 'iNum' równego 95.
Wskazówka:Widać, że złożenia z etykietami, używane razem z 'break' i 'continue', są bardzo potężne, ale nadmierna ich używanie może sprawić trudności w debugowaniu kodu. Upewnij się, że używane etykiety są opisowe i nie nawijaj zbyt wielu warstw pętli.
Wskazówka:Chcesz dowiedzieć się, co to jest złożenie z etykietą, przeczytaj Zdanie etykietowe ECMAScript To rozdział.
- Poprzednia strona Złożenie 'break'
- Następna strona Złożenie z 'with'