JavaScript-də continue instruksiyası
Bir də continue instruksiyası var,
bu da dövrün yeni iterasiyasını başladır. Bu
instruksiya bəzən kodu sadələşdirmək üçün faydalı ola bilər,
baxmayaraq ki, demək olar ki, həmişə vəzifəni
onsuz da həll etmək olar. Gəlin praktiki bir nümunəyə baxaq.
Tutaq ki, bizə ədədlər massivi verilib. Gəlin onu
dövrə ilə gəzək və 2-ə bölünən ədədləri
kvadrata yüksəldib konsola çıxaraq,
3-ə bölünən ədədləri isə kuba yüksəldib
konsola çıxaraq. Təsvir olunan vəzifənin həlli belədir:
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);
}
}
Gördüyünüz kimi, console.log(result)
sətri iki dəfə təkrarlanır. Gəlin onu
if-dən kənara çıxaraq, belə:
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); // çıxarışı şərtdən kənara çıxardıq
}
Lakin indi bizim skript bir az fərqli işləyir:
belə çıxır ki, bizim if vasitəsilə
emaldan keçirilməyən adi elementlər üçün də
result dəyişəninin konsola çıxarılması
yerinə yetiriləcək, bu da bizim vəzifəmizin şərtinə görə
lazım deyil.
Problemi düzəldək, if-ə
2 və 3-ə bölünməyən
elementlər üçün işləyəcək else şərti əlavə edək,
və orada continue instruksiyasını çağıraq,
bu da bizi dərhal dövrün yeni iterasiyasına atayacaq:
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; // dövrün yeni iterasiyasına keçəcək
}
console.log(result); // 2-yə və ya 3-ə bölünərsə yerinə yetiriləcək
}
continue istifadə edərək təkcə cüt ədədləri
çıxaran, 1-dən 100-ə qədər olan
ədədlər arasında tək olanları atlayan bir dövr yazın.