Η δήλωση continue στην JavaScript
Υπάρχει επίσης και η δήλωση continue,
που ξεκινά μια νέα επανάληψη του βρόχου. Αυτή η
δήλωση μπορεί μερικές φορές να είναι χρήσιμη για
την απλοποίηση του κώδικα, αν και σχεδόν πάντα το πρόβλημα
μπορεί να λυθεί και χωρίς αυτήν. Ας δούμε
ένα πρακτικό παράδειγμα.
Ας υποθέσουμε ότι έχουμε έναν πίνακα με αριθμούς. Ας
τον επαναλάβουμε με βρόχο και αριθμούς που διαιρούνται
με το 2, ας τους υψώσουμε στο τετράγωνο και ας τους εκτυπώσουμε
στην κονσόλα, ενώ αριθμούς που διαιρούνται με το 3,
ας τους υψώσουμε στον κύβο και ας τους εκτυπώσουμε στην κονσόλα. Αυτή είναι η λύση
του προβλήματος που περιγράφηκε:
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);
}
}
Όπως βλέπετε, η γραμμή console.log(result)
επαναλαμβάνεται δύο φορές. Ας την βγάλουμε
έξω από το if, έτσι:
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); // βγάλαμε την εκτύπωση έξω από την συνθήκη
}
Ωστόσο, τώρα το script μας λειτουργεί λίγο
διαφορετικά: θα συμβεί ότι και για συνηθισμένα στοιχεία,
που δεν επεξεργάστηκαν μέσω του if μας, θα
εκτελεστεί η εκτύπωση της μεταβλητής result
στην κονσόλα, κάτι που σύμφωνα με τις συνθήκες του προβλήματός μας δεν
χρειαζόμαστε.
Ας διορθώσουμε το πρόβλημα, προσθέτοντας στο if μας
μια ακόμη συνθήκη else, που θα ενεργοποιείται
για στοιχεία που δεν διαιρούνται με το 2 και
το 3, και θα καλούμε εκεί τη δήλωση continue,
που αμέσως θα μας μεταφέρει
σε μια νέα επανάληψη του βρόχου:
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; // θα πάμε σε νέα επανάληψη του βρόχου
}
console.log(result); // θα εκτελεστεί αν διαιρείται με 2 ή 3
}
Γράψτε έναν βρόχο που θα εκτυπώνει μόνο
ζυγούς αριθμούς από το 1
έως το 100,
παραλείποντας τους μονούς χρησιμοποιώντας το continue.