# JavaScript sikllar (for, while, for...of)

> JavaScript'da takrorlash: for sikli, while, for...of va break hamda continue. Bir xil amalni ko'p marta bajarishni amaliy misollarda o'rganing.

Manba: https://learncode.uz/javascript/sikllar/
Sana: 2026-05-26

Bir xil amalni yuz marta yozib chiqish mumkin emas. **Sikl** kodni belgilangan
shart bajarilgunicha takrorlaydi.

## for — eng ko'p ishlatiladigan sikl

```js
for (let i = 1; i <= 5; i++) {
  console.log("Qadam:", i);
}
```

Qavs ichida uch qism, nuqta-vergul bilan ajratiladi:

1. `let i = 1` — **boshlanish**: sanagichni yaratish (bir marta bajariladi);
2. `i <= 5` — **shart**: rost bo'lganda sikl davom etadi;
3. `i++` — **qadam**: har aylanishdan keyin bajariladi.

> **Nega i?**
>
> `i` — "index" (indeks) so'zining qisqasi, kelishilgan nom. Ichma-ich sikllarda
> `j` va `k` davom ettiriladi. Mazmunli nom kerak bo'lsa (`row`, `student`)
> uni ishlatish ham to'g'ri.

## Sanagichni boshqarish

```js
for (let i = 0; i < 10; i += 2) {
  console.log(i);
}

console.log("---");

for (let i = 5; i >= 1; i--) {
  console.log(i);
}
```

Qadamni o'zgartirib juft sonlarni, `i--` bilan teskari sanashni oldik.

## while — shart bajarilgunicha

Necha marta takrorlanishi oldindan noma'lum bo'lsa:

```js
let balance = 100;
let day = 0;

while (balance > 0) {
  balance -= 30;
  day++;
  console.log(day + "-kun:", Math.max(balance, 0));
}

console.log("Mablag'", day, "kunga yetdi");
```

> **Cheksiz sikl**
>
> `while` ichida shartni o'zgartiradigan amal **bo'lishi shart**. Yuqoridagi
> misolda `balance -= 30` ni olib tashlasangiz, shart hech qachon yolg'on
> bo'lmaydi va sikl to'xtamaydi. Bu sahifani muzlatadi — shuning uchun bu
> maydonda "To'xtatish" tugmasi bor.

## for...of — ro'yxat bo'ylab yurish

Massiv elementlari ustidan yurishning eng qulay usuli:

```js
const fruits = ["olma", "banan", "uzum"];

for (const fruit of fruits) {
  console.log(fruit);
}
```

Bu yerda indeks bilan ovora bo'lmaysiz — har aylanishda `fruit` navbatdagi
elementni oladi. Massivlar haqida [keyingi darsda](https://learncode.uz/javascript/massivlar)
batafsil.

Matn ham ketma-ketlik, shuning uchun uning ustidan ham yurish mumkin:

```js
for (const letter of "salom") {
  console.log(letter);
}
```

## break va continue

`break` sikldan butunlay chiqadi, `continue` esa faqat joriy aylanishni
o'tkazib yuboradi:

```js
for (let i = 1; i <= 10; i++) {
  if (i === 5) break;
  console.log(i);
}

console.log("---");

for (let i = 1; i <= 6; i++) {
  if (i % 2 === 0) continue;
  console.log(i);
}
```

Birinchi sikl 5 ga yetganda to'xtadi. Ikkinchisi juft sonlarni o'tkazib
yubordi — faqat toqlari chiqdi.

## Amaliy mashq

Sikllarni mashq qiling:

1. `for` bilan 7 ning ko'paytirish jadvalini chiqaring (1 dan 10 gacha);
2. har qatorni `` `7 x ${i} = ${7 * i}` `` ko'rinishida yozing;
3. 1 dan 100 gacha sonlar yig'indisini hisoblang;
4. `for...of` bilan ismlar massivi ustidan yuring;
5. `continue` bilan faqat juft sonlarni chiqaring.

3-qadam natijasi 5050 chiqishi kerak.

## Qisqacha xulosa

- `for` — takrorlanish soni ma'lum bo'lganda; uch qismi: boshlanish, shart, qadam.
- `while` — shart bajarilgunicha; shartni o'zgartirishni unutmang.
- `for...of` — massiv va matn elementlari bo'ylab yurish uchun eng qulay.
- `break` sikldan chiqadi, `continue` bir aylanishni o'tkazadi.
- Shart hech qachon yolg'on bo'lmasa — **cheksiz sikl**; brauzer qotadi.

Keyingi darsda [funksiyalar](https://learncode.uz/javascript/funksiyalar) — kodni qayta
ishlatiladigan bo'laklarga bo'lishni ko'ramiz.
