Continue-sætningen i JavaScript
Der findes også en continue sætning,
som starter en ny iteration af løkken. Denne
sætning kan undertiden være nyttig til at
forenkle koden, selvom opgaver næsten altid kan
løses uden den. Lad os se på et praktisk eksempel.
Lad os sige, at vi har en array med tal. Lad os
gennemgå den med en løkke, og for de tal, der er delelige
med 2, vil vi opløfte dem til anden potens og udskrive
dem i konsollen, og for de tal, der er delelige med 3,
vil vi opløfte dem til tredje potens og udskrive dem i konsollen. Her er løsningen
på den beskrevne opgave:
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, gentages linjen console.log(result)
to gange. Lad os flytte den
uden for if, sådan her:
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 udskriften ud af betingelsen
}
Nu fungerer vores script dog en smule
anderledes: det vil vise sig, at også for almindelige elementer,
der ikke er blevet behandlet gennem vores if, vil
udskriften af variablen result
til konsollen blive udført, hvilket ifølge betingelsen i vores opgave ikke er
nødvendigt for os.
Lad os rette problemet ved at tilføje en yderligere else
betingelse til vores if,
som vil udløses
for elementer, der ikke er delelige med 2 og
3, og vi vil kalde continue sætningen der,
som straks vil sende os videre
til en ny iteration af 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 videre til næste iteration af løkken
}
console.log(result); // udføres, hvis delelig med 2 eller 3
}
Skriv en løkke, der kun udskriver
lige tal fra 1 til 100,
og springer de ulige over ved hjælp af continue.