ECMAScript-break ja continue-lauseet

Break ja continue-lauseet tarjoavat tarkempaa kontrollia silmukoissa olevan koodin suorittamiseen.

Break ja continue-lauseiden erot

Break-lause poistaa välittömästi silmukan, estäen uudelleen suorittamisen minkään muun koodin.

Continue-lause poistaa nykyisen silmukan, mutta sallii edelleen suorittaa seuraavan silmukan toiston.

Esimerkiksi:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum);	// Tulostaa "4"

Yllä olevassa koodissa for-silmukka iteroi muuttujaa i 1:stä 10:een. Silmukan päässä if-lause tarkistaa (modulaarisen jakojen avulla) voiko i:n arvoa jakaa 5:llä. Jos se voidaan jakaa, suoritetaan break-lause. Alert näyttää "4", mikä on silmukan lopettamisen edellyttämien toistojen määrä.

Jos korvataan tämä esimerkki break-lauseella, tuloksena on eri:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum);	// Tulostaa "8"

Tässä, alert näyttää "8", mikä on silmukassa suoritettujen toistojen määrä. Mahdollinen kokonaismäärä suoritettuja silmukoita on 9, mutta kun i:n arvo on 5, suoritetaan continue-lause, joka päästää silmukan ohjaamaan ohjauslauseeseen iNum++ ja palaa silmukan alkuun.

Yhdessä merkintälausekkeiden kanssa

break- ja continue-lausekkeet voidaan käyttää yhdessä merkintälausekkeiden kanssa palatakseni tiettyyn kohtaan koodia.

Tavallisesti tehdään näin, kun silmukassa on toinen silmukka, esimerkiksi:

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);	// Tulostaa "55"

Yllä olevassa esimerkissä merkintä outermost viittaa ensimmäiseen for-lausekkeeseen. Normaalisti jokainen for-lauseke suorittaa 10 kertaa koodikohdan, mikä tarkoittaa, että iNum++ suoritetaan normaalissa tapauksessa 100 kertaa, ja suoritettuaan sen iNum tulisi olla 100. Tässä break-lausekkeessa on parametri, joka määrittää, mihin lausekkeeseen silmukan lopettamisen jälkeen siirrytään. Tämä tarkoittaa, että break-lauseke ei voi vain hypätä ulos sisäisestä for-silmukasta (eli j:n käyttämä silmukka), vaan myös ulos ulkoisesta for-silmukasta (eli i:n käyttämä silmukka). Siksi iNumin lopullinen arvo on 55, koska kun i ja j ovat molemmat 5, silmukat loppuvat.

Voidaan käyttää continue-lauseketta samalla tavalla:

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);	// Tulostaa "95"

Yllä olevassa esimerkissä continue-lauseke pakottaa silmukan jatkamaan, ei pelkästään sisäistä silmukkaa, vaan myös ulkoista silmukkaa. Kun j on 5, tämä tarkoittaa, että sisäinen silmukka vähentää 5 iteraatiota, mikä tekee iNum-arvosta 95.

Vinkki:Voimme nähdä, että merkintälausekkeet, jotka yhdistetään break ja continue -lausekkeisiin, ovat erittäin voimakkaita, mutta niiden liiallinen käyttö voi aiheuttaa ongelmia koodin virheenkorjauksessa. Varmista, että käytetyt merkinnät ovat selkeitä ja ettei liian monia kerroksia silmukoita sisällytetä.

Vinkki:Haluatko tietää, mitä on merkintälauseke, lue ECMAScript-tunnisteet Tämä luku.