# JavaScript shart operatorlari (if, else, switch)

> JavaScript'da qaror qabul qilish: if, else if, else, ternar operator va switch. Shartga qarab kodni tarmoqlashni amaliy misollarda o'rganing.

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

Dastur har doim bir xil ishlamaydi: foydalanuvchi tizimga kirganmi, savat
bo'shmi, ball yetarlimi — javobga qarab boshqacha yo'l tutadi. Bu **shart
operatorlari** orqali yoziladi.

## if — asosiy shart

```js
const age = 20;

if (age >= 18) {
  console.log("Kirish mumkin");
}
```

Qavs ichidagi ifoda `true` bo'lsa, figurali qavs ichidagi kod bajariladi.
`false` bo'lsa — o'tkazib yuboriladi.

## else — aks holda

```js
const age = 15;

if (age >= 18) {
  console.log("Kirish mumkin");
} else {
  console.log("Yosh yetarli emas");
}
```

`age` qiymatini o'zgartirib, ikkala tarmoqni ham sinab ko'ring.

## else if — bir nechta variant

```js
const score = 85;

if (score >= 90) {
  console.log("A'lo");
} else if (score >= 70) {
  console.log("Yaxshi");
} else if (score >= 50) {
  console.log("Qoniqarli");
} else {
  console.log("Qoniqarsiz");
}
```

Shartlar **yuqoridan pastga** tekshiriladi va **birinchi rost** topilganda
to'xtaydi. Shuning uchun tartib muhim: `ball >= 50` ni birinchi qo'ysangiz,
85 ham, 95 ham "Qoniqarli" bo'lib qolardi.

> **Tartibni tekshiring**
>
> `else if` zanjirini yozganda shartlarni **eng tor**dan eng kengiga qarab
> joylashtiring. Yuqoridagi misolda `>= 90` eng tor, `else` eng keng.

## Shartlarni birlashtirish

[Operatorlar](https://learncode.uz/javascript/operatorlar) darsidagi `&&` va `||` bir nechta
shartni bitta ifodaga bog'laydi:

```js
const age = 25;
const city = "Toshkent";

if (age >= 18 && city === "Toshkent") {
  console.log("Ikkala shart bajarildi");
}

if (age < 18 || city === "Toshkent") {
  console.log("Kamida bittasi bajarildi");
}
```

## Ternar operator — qisqa shakl

Oddiy `if/else` ni bir qatorda yozish mumkin:

```js
const age = 20;

const state = age >= 18 ? "katta" : "lower";
console.log(state);
```

Tuzilishi: `shart ? rostBo'lsa : yolg'onBo'lsa`. U **qiymat qaytaradi**,
shuning uchun o'zgaruvchiga o'zlashtirish mumkin.

Ternar faqat sodda holatlarda ishlatiladi. Ichma-ich yozilsa o'qish
qiyinlashadi — unda oddiy `if` afzal.

## switch — bitta qiymatning ko'p varianti

```js
const day = 3;

switch (day) {
  case 1:
    console.log("Dushanba");
    break;
  case 2:
    console.log("Seshanba");
    break;
  case 3:
    console.log("Chorshanba");
    break;
  default:
    console.log("Boshqa kun");
}
```

> **break ni unutmang**
>
> Har `case` oxirida `break` bo'lishi kerak. Aks holda kod keyingi `case` larga
> "oqib" o'tadi va ularni ham bajaradi. Yuqoridagi misoldan `break` larni olib
> tashlab, natijani ko'ring.

## Amaliy mashq

Chegirma hisoblagichini yozing:

1. `summa` o'zgaruvchisini yarating;
2. `if/else if` bilan chegirmani aniqlang: 100000+ uchun 20%, 50000+ uchun 10%,
   qolgani uchun 0%;
3. yakuniy summani hisoblab chiqaring;
4. shartlar tartibini teskari qilib ko'ring — natija o'zgardimi?
5. xuddi shu mantiqni ternar operator bilan yozib ko'ring.

4-qadam `else if` tartibi nega muhimligini ko'rsatadi.

## Qisqacha xulosa

- `if` — shart rost bo'lsa kodni bajaradi; `else` — aks holda.
- `else if` zanjiri **birinchi rost** shartda to'xtaydi, tartib muhim.
- `&&` va `||` bilan shartlar birlashtiriladi.
- **Ternar** `shart ? a : b` — qiymat qaytaradigan qisqa shakl.
- `switch` bitta qiymatning ko'p variantiga mos; har `case` da `break` shart.

Keyingi darsda [sikllar](https://learncode.uz/javascript/sikllar) — kodni takrorlashni ko'ramiz.
