Sikllar: while va for
Ko'pincha bir xil harakatni bir necha marta takrorlash kerak bo'ladi. Masalan, ro'yxatdagi har bir mahsulotni chiqarish yoki 1 dan 10 gacha bo'lgan sonlarni sanash. Sikllar โ kod blokini ko'p marta bajarish usuli.
"while" sikli
while sikli quyidagi ko'rinishga ega:
while (shart) {
// kod (sikl tanasi deb ataladi)
}
shart rost (true) bo'lgunicha, sikl tanasidagi kod qayta-qayta bajariladi.
Masalan, quyidagi sikl i < 3 shart bajarilguncha i ni chiqaradi:
Sikl tanasining bir marta bajarilishi iteratsiya deb ataladi. Yuqoridagi sikl 3 ta iteratsiya bajaradi.
i++ bo'lmaganida, sikl nazariy jihatdan cheksiz takrorlanardi. Amalda brauzer yoki Node.js muzlab qoladi. Har bir while sikli shartni oxir-oqibat false qiladigan o'zgarishga ega bo'lishi shart.Sikl shartida istalgan ifoda bo'lishi mumkin โ u boolean ga o'giriladi. Masalan, while (i) โ bu while (i != 0) ning qisqartmasi:
"do..while" sikli
Shartni tekshirishni sikl tanasidan keyinga qo'yish uchun do..while ishlatiladi:
do {
// sikl tanasi
} while (shart);
Sikl avval tanani bajaradi, so'ng shartni tekshiradi va rost bo'lsa yana takrorlaydi. Muhim farqi: tana kamida bir marta bajariladi, hatto shart darhol false bo'lsa ham.
do..while nisbatan kam ishlatiladi. Odatda oddiy while yetarli. U faqat tana kamida bir marta bajarilishi shart bo'lgan hollarda qulay."for" sikli
for sikli โ eng ko'p ishlatiladigan sikl. U uch qismdan iborat:
for (boshlanish; shart; qadam) {
// sikl tanasi
}
1 dan 3 gacha sanaydigan misolni ko'raylik:
Uch qismning har birini alohida ko'rib chiqaylik:
- boshlanish:
let i = 0โ siklga kirishda bir marta bajariladi; - shart:
i < 3โ har iteratsiyadan oldin tekshiriladi;falsebo'lsa sikl to'xtaydi; - tana:
console.log(i)โ shart rost bo'lsa qayta-qayta bajariladi; - qadam:
i++โ har iteratsiya tanasidan keyin bajariladi.
Bajarilish tartibi shunday: boshlanish โ (shart โ tana โ qadam) โ (shart โ tana โ qadam) โ ... โ shart false bo'lganda to'xtaydi.
boshlanish qismida e'lon qilingan o'zgaruvchi (let i) faqat sikl ichida ko'rinadi. Bu "inline" (ichki) o'zgaruvchi deyiladi.Amaliy misol โ 1 dan 5 gacha sonlar yig'indisini hisoblaylik:
for ning ba'zi qismlarini tashlab yuborish ham mumkin. Masalan, boshlanish ni olib tashlash:
Hatto barcha qismlarni tashlab, cheksiz sikl yozish mumkin: for (;;) { ... }. Ammo bunda ichkarida to'xtatuvchi shart bo'lishi kerak.
Siklni to'xtatish: "break"
Odatda sikl shart false bo'lganda tugaydi. Lekin istalgan payt break direktivasi bilan uni majburan to'xtatish mumkin.
Foydalanuvchidan sonlar yig'indisini hisoblaydigan misol โ bo'sh kiritish sikldan chiqaradi. Bunday holatda "cheksiz" sikl + break qulay:
break nafaqat for, balki while va do..while sikllarida ham ishlaydi. U eng yaqin siklni to'xtatadi.Keyingi iteratsiyaga o'tish: "continue"
continue โ break ning "yengilroq" varianti. U butun siklni to'xtatmaydi, faqat joriy iteratsiyani to'xtatib, keyingisiga o'tadi.
Faqat toq sonlarni chiqaradigan misol:
continue ichma-ich shartlar sonini kamaytirib, kodni toza saqlashga yordam beradi. Yuqoridagi kodni continuesiz ham yozish mumkin edi, lekin u ichkariga qo'shimcha { } qatlamini qo'shardi.
break va continue ni ? (ternar operator) o'ng tomonida ishlatib bo'lmaydi. Masalan, (i > 5) ? break : ... โ bu sintaksis xatosi. Ular alohida direktiva, ifoda emas.Yorliqlar (labels)
Ba'zan ichma-ich (bir nechta) sikllardan birdaniga chiqish kerak bo'ladi. Oddiy break faqat ichki siklni to'xtatadi. Bunda yorliq (label) yordam beradi.
Yorliq โ sikl oldiga qo'yilgan nom va ikki nuqta: nom:
break tashqi โ tashqi: deb belgilangan siklga o'tib, uni butunlay to'xtatadi. continue ni ham yorliq bilan ishlatish mumkin โ u tashqi siklning keyingi iteratsiyasiga sakraydi.
return ishlatish toza yechim bo'ladi.Xulosa
- while (shart) โ tanadan oldin shartni tekshiradi;
- do..while โ tanani kamida bir marta bajaradi, so'ng shartni tekshiradi;
- for (boshlanish; shart; qadam) โ eng ko'p ishlatiladigan, ixcham sikl;
- break โ siklni butunlay to'xtatadi;
- continue โ joriy iteratsiyani to'xtatib, keyingisiga o'tadi;
- yorliqlar (labels) โ ichma-ich sikllardan birdaniga chiqish uchun (kamdan-kam kerak).