JavaScript

JAVASCRIPTIIN LIITTYVÄÄ KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.

JavaScriptin ohjausrakenteet: While- ja Do-White toistolauseet

While-toistolause

While-toistolause toistaa koodilohkoa niin kauan kuin ehto on tosi (true). Toistolause koostuu while-käskystä ja siihen liittyvästä ehtolauseesta:


while (ehto) {
	// suorita jotain
}

Esimerkiksi seuraava koodi tulostaa muuttujan a arvon kahdesti:


var a = 0;

while (a <= 1) {
console.log("muuttujan a arvo on ",a,"<br>");
a = a+1;
}

While-silmukoiden ensisijainen käyttökohde on nykyisin synkronisissa laskutehtävissä. Sen sijaan asynkroniset tapahtumat käsitellään modernissa JavaScriptissä while-lauseen sijaan tapahtumankuuntelijoiden, callbackien, lupausten (promises) tai async/await-rakenteen avulla.

Varo ikisilmukkaa

While-toistolausetta käyttäessä tulee varoa ns. ikisilmukan syntymistä. Ikisilmukka syntyy, kun toistolauseen ehto ei koskaan täyty ja silmukka jatkuu loputtomasti. Tämä voi aiheuttaa suoritusongelmia ja sovelluksen kaatumisen. Osa selaimista tunnistaa ja estää mahdolliset ikisilmukat käyttäjäkokemuksen parantamiseksi.

Seuraava koodi on esimerkki ikisilmukasta. Älä kokeile tätä muualla kuin paikallisessa kehitysympäristössäsi:


var a = 0;

while (a < 1) {  
    //a on aina pienempi kuin 1
    console.log("moi");
}

Do-While-toistolause

While-lauseen lisäksi on olemassa do-while-toistolause, joka tarjoaa hieman erilaisen lähestymistavan. Erona on nk. do-lohko, joka suoritetaan vähintäänkin kerran vaikka while-ehto ei toteutuisikaan. Tämä ominaisuus on hyödyllinen tilanteissa, joissa halutaan varmistaa, että jokin toiminto suoritetaan ainakin kerran, vaikka ehto ei täyttyisi.

Do-white rakenteen syntaksi on :


do {
    // suoritetaan vähintäänkin kerran
}
while (ehto) {
    // suoritettava koodi
}

Esimerkiksi:


do {
    a = a+1;
    console.log("Arvo on ",a,"<br>");
}
while (a > 2) {
    console.log("muuttujan a arvo on ",a,"<br>");
    a = a+1;
}

break ja continue ohjaavat suorittamista

While-lause tarjoaa kaksi kontrollikomentoa, joilla voidaan hallita silmukan suoritusta:

Nämä rakenteet tarjoavat joustavuutta toistarakenteeseen, mutta niiden oikeaoppinen käyttö vaatii huolellista suunnittelua. Break-komento on hyödyllinen esimerkiksi silloin, kun havaitaan jokin virheellinen tila, ja silmukan jatkaminen ei ole mielekästä. Continue-komento puolestaan sopii tapauksiin, joissa tietyt tilanteet halutaan jättää huomiotta silmukan sisällä.

Alla yksinkertainen esimerkki break-rakenteen käytöstä:


var a = 0;
var k = 50;

while (a <= 100) {
	a = a+1;
	k = k + a;
	if (k > 100){
		break;
	}

	console.log("muuttujan a arvo on ",a,"<br>");
	console.log("muuttujan k arvo on ",k,"<br>");
}