Zdania break i continue ECMAScript

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ł.