Instruktionen continue i JavaScript
Det finns också en instruktion continue,
som startar en ny iteration av loopen. Denna
instruktion kan ibland vara användbar för
att förenkla koden, även om uppgifter nästan alltid
kan lösas utan den. Låt oss titta på ett
praktiskt exempel.
Låt oss säga att vi har en array med siffror. Låt oss
gå igenom den med en loop och för de tal som är delbara
med 2, kvadrera dem och skriv ut
dem till konsolen, och för de tal som är delbara med 3,
upphöj dem till kubik och skriv ut dem till konsolen. Här är lösningen
på den beskrivna uppgiften:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 === 0) {
result = elem * elem;
console.log(result);
} else if (elem % 3 === 0) {
result = elem * elem * elem;
console.log(result);
}
}
Som du kan se, raden console.log(result)
upprepas två gånger. Låt oss flytta ut den
bortom if, så här:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 === 0) {
result = elem * elem;
} else if (elem % 3 === 0) {
result = elem * elem * elem;
}
console.log(result); // flyttade ut utskriften bortom villkoret
}
Men nu fungerar vårt skript lite
annorlunda: det kommer att visa sig att även för vanliga element,
som inte bearbetades genom vår if, kommer
utskrift av variabeln result
till konsolen att utföras, vilket enligt villkoren för vår uppgift inte är
nödvändigt för oss.
Låt oss åtgärda problemet genom att lägga till
ett ytterligare villkor else till vår if,
som kommer att triggas
för element som inte är delbara med 2 och
3, och anropa instruktionen continue där,
som omedelbart kommer att kasta oss över
till en ny iteration av loopen:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 == 0) {
result = elem * elem;
} else if (elem % 3 == 0) {
result = elem * elem * elem;
} else {
continue; // går till nästa iteration av loopen
}
console.log(result); // utförs om delbart med 2 eller 3
}
Skriv en loop som endast skriver ut
jämna tal från 1 till 100,
och hoppar över de ojämna med hjälp av continue.