Instrucțiunea continue în JavaScript
Există și instrucțiunea continue,
care pornește o nouă iterație a ciclului. Această
instrucțiune poate fi uneori utilă pentru
simplificarea codului, deși aproape întotdeauna sarcina
poate fi rezolvată și fără ea. Să ne uităm
la un exemplu practic.
Să presupunem că avem o matrice cu numere. Să
o parcurgem cu un ciclu și numerele care se împart
la 2, le vom ridica la pătrat și le vom afișa
în consolă, iar numerele care se împart la 3,
le vom ridica la cub și le vom afișa în consolă. Iată soluția
sarcinii descrise:
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);
}
}
După cum vedeți, linia console.log(result)
se repetă de două ori. Să o scoatem
în afara if, astfel:
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); // am mutat afișarea în afara condiției
}
Totuși, acum scriptul nostru funcționează puțin
diferit: se va întâmpla ca și pentru elementele obișnuite,
neprocesate prin if-ul nostru, să se
execute afișarea variabilei result
în consolă, ceea ce conform condițiilor sarcinii noastre
nu avem nevoie.
Să corectăm problema, adăugând la if-ul nostru
încă o condiție else, care se va activa
pentru elementele care nu se împart la 2 și
3, și vom apela acolo instrucțiunea continue,
care ne va arunca imediat
la o nouă iterație a ciclului:
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; // vom trece la o nouă iterație a ciclului
}
console.log(result); // se va executa dacă se împarte la 2 sau 3
}
Scrieți un ciclu care va afișa doar
numerele pare de la 1 la 100,
omițând cele impare cu ajutorul continue.