Instruksjonen continue i JavaScript
Det finnes også en instruksjon kalt continue,
som starter en ny iterasjon av løkken. Denne
instruksjonen kan noen ganger være nyttig for å
forenkle koden, selv om oppgaven nesten alltid kan
løses uten den. La oss se på et praktisk eksempel.
La oss si at vi har en array med tall. La oss
gå gjennom den med en løkke og for tallene som er delelige
på 2, skal vi kvadrere dem og skrive
dem ut til konsollen, og tall som er delelige på 3,
skal vi kubere og skrive ut til konsollen. Her er løsningen
på den beskrevne oppgaven:
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 ser, gjentas linjen console.log(result)
to ganger. La oss flytte den
utenfor if, slik:
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); // flyttet utskriften ut av betingelsen
}
Nå fungerer imidlertid skriptet vårt litt
annerledes: det vil si at også for vanlige elementer,
som ikke ble behandlet gjennom vår if, vil
utskriften av variabelen result
til konsollen bli utført, noe som ifølge betingelsen i oppgaven vår
ikke er ønsket.
La oss rette opp problemet ved å legge til en else
til vår if,
som vil utløses
for elementer som ikke er delelige på 2 og
3, og kalle instruksjonen continue der,
som umiddelbart vil sende oss
videre til neste iterasjon av løkken:
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 til neste iterasjon av løkken
}
console.log(result); // utføres hvis delelig på 2 eller 3
}
Skriv en løkke som kun skriver ut
partall fra 1 til 100,
og hopper over oddetall ved hjelp av continue.