ECMAScript-break ja continue-lauseet
- Edellinen sivu break-lauseke
- Seuraava sivu with-lauseke
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.
- Edellinen sivu break-lauseke
- Seuraava sivu with-lauseke