JavaScript asoslari

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:

while.js
// natija shu yerda chiqadi

Sikl tanasining bir marta bajarilishi iteratsiya deb ataladi. Yuqoridagi sikl 3 ta iteratsiya bajaradi.

Agar 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:

while-qisqa.js
// natija shu yerda chiqadi

"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.js
// natija shu yerda chiqadi
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:

for.js
// natija shu yerda chiqadi

Uch qismning har birini alohida ko'rib chiqaylik:

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:

yigindi.js
// natija shu yerda chiqadi

for ning ba'zi qismlarini tashlab yuborish ham mumkin. Masalan, boshlanish ni olib tashlash:

for-bosh.js
// natija shu yerda chiqadi

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.js
// natija shu yerda chiqadi
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.js
// natija shu yerda chiqadi

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:

label.js
// natija shu yerda chiqadi

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.

Yorliqlar kamdan-kam ishlatiladi. Ular kod oqimini "sakratadi" va o'qishni qiyinlashtiradi. Ko'pincha ichma-ich sikllarni alohida funksiyaga ajratish va return ishlatish toza yechim bo'ladi.

Xulosa