Mundarija (36)
- Bu darsda
- 1. Nega bu kerak?
- 2. if — "agar ... bo'lsa"
- 2.1 Birinchi misol
- 2.2 if ning qismlari
- 2.3 Shartda istalgan qiymat bo'lishi mumkin
- 3. else — "aks holda"
- 3.1 Ikki yo'ldan biri
- 3.2 Juft yoki toq
- 4. else if — ko'p yo'l
- 4.1 Uch va undan ko'p variant
- 4.2 Tartib muhim
- 4.3 else majburiy emas
- 5. Shartlarni birlashtirish va o'qiladigan qilish
- 5.1 &&, || va ! bilan
- 5.2 Uzun shartga nom bering
- 6. Ichma-ich shartlar va ularni tekislash
- 6.1 if ichida if
- 6.2 Tekis variant: avval "yomon" holatlar
- 6.3 Ichma-ich shart qachon ma'qul?
- 7. Blok ichidagi o'zgaruvchi tashqarida ko'rinmaydi
- 7.1 if yoki ternary?
- 8. Ko'p uchraydigan xatolar
- 8.1 === o'rniga =
- 8.2 Jingalak qavssiz ikki qator
- 8.3 Shartdan keyin nuqtali vergul
- 8.4 else dan oldin nuqtali vergul
- 8.5 0 < x < 10 deb yozish
- 8.6 x === "a" || "b" deb yozish
- 8.7 Boshqa tillardan kelgan yozuvlar
- 9. Mashqlar
- 1-mashq (oson): Musbat, manfiy yoki nol
- 2-mashq (o'rta): Kino chiptasi
- 3-mashq (qiyin): Zinapoyani tekislang
- 10. Real ishda
- Xulosa
JavaScript if / else: shartga qarab qaror qabul qilish
Qisqacha:
if— "agar shart rost bo'lsa, shu kodni bajar" degan ko'rsatma.else— "aks holda buni bajar",else ifesa yana bir shartni tekshiradi. Masalan:if (yosh >= 18) { ... } else { ... }. JavaScript shartlarni yuqoridan pastga tekshiradi va faqat birinchi rost chiqqan blokni bajaradi.
Bu darsda
if,elsevaelse ifbilan dasturni turli yo'llarga yo'naltira olasiz.- Blok
{ }nima ekanini va shart ichida truthy/falsy qanday ishlashini tushuntira olasiz. else ifzanjirida shartlarni to'g'ri tartibda yoza olasiz.- Ichma-ich shartlarni tekis, o'qiladigan ko'rinishga keltira olasiz.
=va===kabi eng ko'p uchraydigan xatolarni tanib olasiz.
Oldin bilishingiz kerak: Boolean va truthy/falsy qiymatlar, Taqqoslash operatorlari, Mantiqiy operatorlar, Ternary operatori.
1. Nega bu kerak?
Oldingi darsda juda katta sonlar bilan ishlashni ko'rdik. Lekin hozirgacha yozgan har bir dasturimizda bitta umumiy narsa bor. Dastur hamma qatorni yuqoridan pastga, birma-bir bajaradi. Hech qachon butun qatorni tashlab ketmaydi. To'g'ri, ternary va && bilan ifoda ichida ikki qiymatdan birini tanlashni ko'rgansiz. Lekin u holda ham qatorning o'zi baribir bajariladi.
Real hayotda esa har qadamda tanlov bor:
- Taksi ilovasi: kechasi narx qimmatroq, kunduzi arzonroq.
- Maktab: 86 dan yuqori ball — "5", undan pastrog'i — boshqa baho.
- Do'kon: talaba bo'lsangiz — chegirma, aks holda — to'liq narx.
- Click yoki Payme: hisobda pul yetsa — to'lov o'tadi, yetmasa — xato xabari.
Hayotdan o'xshatish: yo'l ayrilishi. Haydovchi belgiga qaraydi va yoki chapga, yoki o'ngga buriladi. Ikkala yo'ldan bir vaqtda yura olmaydi.
Dasturda bunday "yo'l ayrilishi" if ko'rsatmasi bilan yoziladi. Bu darsdan boshlab dasturlaringiz butun kod bo'laklari ustida qaror qabul qiladi: qaysi qatorlar bajarilishini o'zi tanlaydi.
2. if — "agar ... bo'lsa"
2.1 Birinchi misol
Haydovchilik kursiga faqat 18 yoshdan yozilish mumkin. Buni kod bilan tekshiramiz:
const yosh = 20;
if (yosh >= 18) {
console.log("Kursga yozilishingiz mumkin");
}
console.log("Tekshiruv tugadi");Konsolda:
Kursga yozilishingiz mumkin
Tekshiruv tugadiEndi birinchi qatorda yoshni 15 ga o'zgartirib, qayta ishga tushiring. Konsolda faqat bitta qator qoladi:
Tekshiruv tugadiBirinchi console.log bajarilmadi! JavaScript 15 >= 18 ni tekshirdi, false chiqdi va jingalak qavs ichidagi hamma narsani tashlab o'tdi. Qavsdan keyingi qator esa har doimgidek bajarildi.
2.2 if ning qismlari
if (shart) {
// shart rost bo'lsa bajariladigan kod
}if— kalit so'z. Inglizchada "agar" degani.(yosh >= 18)— shart (condition). U doim oddiy qavs ichida yoziladi. Qavs majburiy.{ ... }— blok (block). Jingalak qavslar ichidagi bir yoki bir necha qator. Shart rost bo'lsa — blok bajariladi, yolg'on bo'lsa — butunlay tashlab o'tiladi.
Blokni qutiga o'xshatish mumkin. Quti ichiga bir nechta buyum solasiz. Qutini yoki butunligicha olasiz, yoki umuman olmaysiz — yarmini olib bo'lmaydi.
Blok ichidagi qatorlar 2 ta bo'sh joy bilan o'ngga suriladi. Bu chekinish (indentation). JavaScript uchun chekinishning ahamiyati yo'q, lekin odam uchun juda muhim: qaysi qator blok ichida ekani bir qarashda ko'rinadi. VS Code buni o'zi qiladi.
2.3 Shartda istalgan qiymat bo'lishi mumkin
Shartga faqat true yoki false beradigan taqqoslash yozilmaydi. Istalgan qiymat yozish mumkin. JavaScript uni o'zi mantiqiy qiymatga aylantiradi — truthy/falsy darsidagi qoida bo'yicha.
Masalan, foydalanuvchi promo-kod kiritdimi yoki yo'qmi:
const promoKod = "";
if (promoKod) {
console.log("Promo-kod tekshirilmoqda...");
}
console.log("Buyurtma davom etmoqda");Konsolda:
Buyurtma davom etmoqdaBo'sh satr "" — falsy. Shuning uchun blok bajarilmadi. promoKod ga "BAHOR10" yozsangiz — satr bo'sh emas, truthy, blok bajariladi.
8 ta falsy qiymatni eslang: false, 0, -0, 0n, "", null, undefined, NaN. Shartda ulardan biri chiqsa — blok bajarilmaydi. Qolgan hamma qiymatda — bajariladi.
Diqqat:
0ham falsy. Agar0sizning dasturingizda to'g'ri qiymat bo'lsa (masalan, imtihondan 0 ball),if (ball)ishlatmang — 0 ballni "ball yo'q" deb o'ylaydi. Aniq yozing:if (ball !== null)yokiif (ball >= 0).
Tekshirib ko'ring: Qaysi holatlarda blok bajariladi?
if ("0"),if (0),if ("salom"),if (null),if (-5).
Javob
Bajariladi: "0", "salom" va -5. Bajarilmaydi: 0 va null. "0" — bu son emas, bitta belgili satr. Bo'sh bo'lmagan har qanday satr truthy. -5 ham truthy: falsy sonlar faqat 0, -0 va NaN.
3. else — "aks holda"
3.1 Ikki yo'ldan biri
Ko'pincha "shart rost bo'lsa — buni, aks holda — ana buni qil" deymiz. Buning uchun if blokidan keyin else qo'yiladi:
const tolandi = false;
if (tolandi) {
console.log("Rahmat! Chek Telegram'ga yuborildi.");
} else {
console.log("To'lov o'tmadi. Kartani tekshiring.");
}Konsolda:
To'lov o'tmadi. Kartani tekshiring.else — "aks holda". Unda shart yo'q: u "qolgan hamma holat" uchun. if va else dan aniq bittasi bajariladi. Hech qachon ikkalasi ham emas, hech qachon ikkalasi ham tashlab o'tilmaydi.
tolandi qiymati |
Qaysi blok bajariladi |
|---|---|
true |
if bloki |
false |
else bloki |
3.2 Juft yoki toq
Arifmetik operatorlar darsidagi % (qoldiq) bilan son juftligini tekshirish mumkin. Juft son 2 ga bo'linganda qoldiq 0 bo'ladi:
const son = 7;
if (son % 2 === 0) {
console.log(`${son} — juft son`);
} else {
console.log(`${son} — toq son`);
}Konsolda:
7 — toq sonBo'sh joyni to'ldiring. Hisobdagi pul narxdan kam bo'lmasa — "Sotib olindi", aks holda — "Mablag' yetarli emas":
const balans = 30000;
const narx = 45000;
if (balans >= narx) {
console.log("Sotib olindi");
} ___ {
console.log("Mablag' yetarli emas");
}Bo'sh joyga yoziladigan so'z:
4. else if — ko'p yo'l
4.1 Uch va undan ko'p variant
Ikki yo'l har doim ham yetmaydi. Taksi tarifini ko'ramiz. Soat 22:00 dan 06:00 gacha — tungi tarif. Ertalab 7–10 va kechqurun 17–20 — tirbandlik tarifi. Qolgan vaqtda — kunduzgi tarif.
const soat = 18;
let tarif;
if (soat >= 22 || soat < 6) {
tarif = 12000;
} else if (soat >= 7 && soat < 10) {
tarif = 10000;
} else if (soat >= 17 && soat < 20) {
tarif = 10000;
} else {
tarif = 8000;
}
console.log(`Boshlang'ich narx: ${tarif} so'm`);Konsolda:
Boshlang'ich narx: 10000 so'melse if — "aks holda, agar ...". JavaScript shartlarni yuqoridan pastga birma-bir tekshiradi:
18 >= 22 || 18 < 6— yolg'on. Keyingisiga o'tadi.18 >= 7 && 18 < 10— yolg'on. Keyingisiga o'tadi.18 >= 17 && 18 < 20— rost. Shu blok bajariladi.- Qolgan hamma narsa — shu jumladan
else— tashlab o'tiladi.
Qoida: else if zanjirida faqat birinchi rost shartning bloki bajariladi. Undan keyingi shartlar hatto tekshirilmaydi ham.
Shu yo'lni sxemada ko'ring. Har bir romb — savol, har bir to'rtburchak — bajariladigan ish. Dastur yuqoridan kiradi va birinchi "ha" javobidayoq zanjirdan chiqadi:
flowchart TD
S([soat = 18]) --> A{"Tunmi? soat >= 22 yoki soat < 6"}
A -- ha --> T1[tarif = 12000]
A -- yo'q --> B{"Ertalabki tirbandlikmi? 7 <= soat < 10"}
B -- ha --> T2[tarif = 10000]
B -- yo'q --> C{"Kechki tirbandlikmi? 17 <= soat < 20"}
C -- ha --> T3[tarif = 10000]
C -- yo'q --> T4["else: tarif = 8000"]
T1 --> E([narxni chiqarish])
T2 --> E
T3 --> E
T4 --> Esoat = 18 bo'lganda yo'l shunday: birinchi romb — "yo'q", ikkinchisi — "yo'q", uchinchisi — "ha". Dastur tarif = 10000 ga boradi va to'g'ridan-to'g'ri oxiriga o'tadi. else blokiga umuman yetib bormaydi.
E'tibor bering: tarif o'zgaruvchisini if dan oldin let bilan yaratdik, qiymatni esa bloklar ichida berdik. Nega aynan shunday — 7-bo'limda ko'ramiz.
4.2 Tartib muhim
Maktabda test balliga qarab baho qo'yiladi: 86 va undan yuqori — "5", 71 dan — "4", 56 dan — "3", qolgani — "2".
const ball = 92;
let baho;
if (ball >= 86) {
baho = 5;
} else if (ball >= 71) {
baho = 4;
} else if (ball >= 56) {
baho = 3;
} else {
baho = 2;
}
console.log(`Ball: ${ball}, baho: ${baho}`); // Ball: 92, baho: 5Ikkinchi shartda ball >= 71 && ball < 86 deb yozmadik. Kerak ham emas: ikkinchi shartga faqat birinchisi yolg'on bo'lganda yetib kelamiz. Demak, u yerda ball allaqachon 86 dan kichik.
Endi shartlar tartibini buzamiz — eng kichigini birinchi qo'yamiz:
const ball = 92;
let baho;
if (ball >= 56) {
baho = 3;
} else if (ball >= 71) {
baho = 4;
} else if (ball >= 86) {
baho = 5;
} else {
baho = 2;
}
console.log(`Ball: ${ball}, baho: ${baho}`); // Ball: 92, baho: 392 ball olgan o'quvchiga "3" qo'yildi! Sababi: 92 >= 56 ham rost. JavaScript birinchi rost shartni topdi va to'xtadi. Qoida: oraliqlarni tekshirganda eng qattiq shartni birinchi yozing (bu yerda — eng katta balldan pastga qarab).
4.3 else majburiy emas
else if zanjirining oxirida else bo'lmasligi ham mumkin. Unda hech bir shart rost chiqmasa, hech bir blok bajarilmaydi. Masalan, havo 35 darajadan issiq yoki 0 dan sovuq bo'lsa ogohlantiramiz. 25 darajada esa hech narsa demaymiz — else kerak emas.
Tekshirib ko'ring:
soat = 6bo'lsa, taksi misolida narx qancha bo'ladi?soat = 22bo'lsa-chi?
Javob
soat = 6 da — 8000 so'm. 6 < 6 yolg'on, 6 >= 7 ham yolg'on. Hech bir shart rost emas, shuning uchun else ishladi. soat = 22 da esa — 12000 so'm, chunki 22 >= 22 rost. Chegara sonlarini (6, 22) tekshirish — shartdagi < va <= farqini topishning eng yaxshi usuli.
5. Shartlarni birlashtirish va o'qiladigan qilish
5.1 &&, || va ! bilan
Shart ichida mantiqiy operatorlar bemalol ishlaydi. Do'konda chegirma qoidalari:
- Talaba bo'lsa va xarid 200 000 so'mdan ko'p bo'lsa — 15%.
- Aks holda,
BAHOR10promo-kodi bo'lsa — 10%. - Aks holda chegirma yo'q.
const summa = 250000;
const talaba = true;
const promoKod = "BAHOR10";
let chegirma = 0;
if (talaba && summa >= 200000) {
chegirma = 15;
} else if (promoKod === "BAHOR10") {
chegirma = 10;
}
const tolov = summa - (summa * chegirma) / 100;
console.log(`Chegirma: ${chegirma}%, to'lov: ${tolov} so'm`);Konsolda:
Chegirma: 15%, to'lov: 212500 so'mTalaba ham, promo-kod ham bor. Lekin faqat birinchi rost shart ishladi — chegirmalar qo'shilib ketmadi. Bu yerda else yo'q, chunki chegirma boshidanoq 0 qilib qo'yilgan.
! — "emas". if (!tolandi) deb o'qiladi: "agar to'lanmagan bo'lsa".
5.2 Uzun shartga nom bering
Shart uzun bo'lsa, uni o'qish qiyinlashadi:
if ((soat >= 7 && soat < 10) || (soat >= 17 && soat < 20)) {Qavslar ko'p, ko'z adashadi. Yechim — shartni avval mantiqiy o'zgaruvchiga saqlash:
const soat = 8;
const ertalabkiTirbandlik = soat >= 7 && soat < 10;
const kechkiTirbandlik = soat >= 17 && soat < 20;
if (ertalabkiTirbandlik || kechkiTirbandlik) {
console.log("Tirbandlik tarifi: 10000 so'm");
} else {
console.log("Oddiy tarif: 8000 so'm");
}Konsolda:
Tirbandlik tarifi: 10000 so'mEndi if qatori oddiy o'zbekcha gapdek o'qiladi: "agar ertalabki tirbandlik yoki kechki tirbandlik bo'lsa". Kod uzunroq bo'ldi, lekin tushunarliroq.
6. Ichma-ich shartlar va ularni tekislash
6.1 if ichida if
Blok ichida istalgan kod yozish mumkin — boshqa if ham. Bu ichma-ich shart (nested if) deyiladi.
Taksi buyurtmasi. Tekshiramiz: yaqinda bo'sh haydovchi bormi, karta ulanganmi, kartada pul yetadimi:
const haydovchiBor = true;
const kartaUlangan = true;
const balans = 15000;
const narx = 20000;
if (haydovchiBor) {
if (kartaUlangan) {
if (balans >= narx) {
console.log("Buyurtma qabul qilindi!");
} else {
console.log("Kartada mablag' yetarli emas");
}
} else {
console.log("Avval karta ulang");
}
} else {
console.log("Yaqinda bo'sh haydovchi yo'q");
}Konsolda:
Kartada mablag' yetarli emasKod ishlaydi. Lekin qarang: u o'ngga qarab "zinapoya" bo'lib ketdi. Qaysi else qaysi if ga tegishli? Buni topish uchun qavslarni sanashga to'g'ri keladi. Yana bitta tekshiruv qo'shilsa — zinapoya yanada chuqurlashadi.
6.2 Tekis variant: avval "yomon" holatlar
Xuddi shu mantiqni boshqacha yozamiz. Avval muammoli holatlarni birma-bir tekshiramiz. Hammasidan o'tsa — asosiy ish else da:
const haydovchiBor = true;
const kartaUlangan = true;
const balans = 15000;
const narx = 20000;
if (!haydovchiBor) {
console.log("Yaqinda bo'sh haydovchi yo'q");
} else if (!kartaUlangan) {
console.log("Avval karta ulang");
} else if (balans < narx) {
console.log("Kartada mablag' yetarli emas");
} else {
console.log("Buyurtma qabul qilindi!");
}Konsolda:
Kartada mablag' yetarli emasNatija bir xil. Lekin endi kod tekis: har bir muammo — bitta qator shart va bitta xabar. Yuqoridan pastga o'qiysiz, xuddi ro'yxatdek.
Bunday oldindan to'sib qo'yadigan tekshiruv qo'riqchi shart (guard clause) deyiladi. Xuddi to'y zali eshigidagi qo'riqchi kabi: taklifnomasi yo'qni darhol qaytaradi. Zalga faqat hamma tekshiruvdan o'tganlar kiradi.
Funksiyalarni o'rganganimizdan keyin qo'riqchi shart yanada qulay bo'ladi. return bilan muammoli holatda darhol chiqib ketish mumkin. Buni return va erta qaytish darsida ko'ramiz.
6.3 Ichma-ich shart qachon ma'qul?
Ichma-ich shart — xato emas. Kod qisqa bo'lsa, 2 qavatgacha ichma-ich odatda yaxshi o'qiladi. 3 va undan ko'p qavat bo'lsa yoki else o'z if idan uzoqlashib ketsa — tekislash vaqti keldi.
Tekshirib ko'ring: 6.2-dagi tekis kodda
haydovchiBor = falsebo'lsa, qaysi xabar chiqadi? Balans tekshiriladimi?
Javob
"Yaqinda bo'sh haydovchi yo'q" chiqadi. Balans umuman tekshirilmaydi: birinchi shart (!haydovchiBor) rost chiqdi, qolgan hamma else if tashlab o'tildi. Qo'riqchi shartning foydasi shunda — keyingi tekshiruvlar faqat oldingilari o'tganda bajariladi.
7. Blok ichidagi o'zgaruvchi tashqarida ko'rinmaydi
Nega 4-bo'limda tarif ni if dan oldin yaratdik? Mana bunday yozsak nima bo'ladi:
const soat = 23;
if (soat >= 22) {
let tarif = 12000;
} else {
let tarif = 8000;
}
console.log(tarif);ReferenceError: tarif is not definedTarjimasi: "tarif aniqlanmagan". let yoki const bilan blok ichida yaratilgan o'zgaruvchi faqat shu blok ichida yashaydi. Blok tugashi bilan u yo'qoladi. Xuddi qutiga solingan buyum kabi — qutidan tashqarida uni topa olmaysiz.
To'g'ri yo'l — o'zgaruvchini blokdan tashqarida yaratish, qiymatni blok ichida berish:
const soat = 23;
let tarif;
if (soat >= 22) {
tarif = 12000;
} else {
tarif = 8000;
}
console.log(tarif); // 12000Bu yerda const emas, let kerak: qiymat keyinroq beriladi. Faqat ikki variantdan birini tanlash bo'lsa, ternary qisqaroq: const tarif = soat >= 22 ? 12000 : 8000;. Bu qoidaning ichki sababini scope darsida batafsil o'rganamiz.
7.1 if yoki ternary?
Ikkalasi ham tanlov qiladi. Farqi:
| Vaziyat | Nima ishlating |
|---|---|
| Ikki qiymatdan birini tanlab, o'zgaruvchiga berish | Ternary |
Har tarmoqda bir necha qator yoki console.log kabi amal |
if / else |
| Uch va undan ko'p variant | else if zanjiri |
Ternary — qiymat beradigan ifoda. if esa amal bajaradigan ko'rsatma. if ni const x = if (...) deb yozib bo'lmaydi.
8. Ko'p uchraydigan xatolar
8.1 === o'rniga =
Bu boshlovchilarning eng mashhur xatosi. Bitta = — tayinlash (qiymat berish), uchta === — taqqoslash.
let tarif = "komfort";
if (tarif = "ekonom") {
console.log("Ekonom tarif tanlandi");
}
console.log(tarif); // ekonomKonsolda:
Ekonom tarif tanlandi
ekonomIkki muammo bir vaqtda! Shart tarif ni tekshirmadi — unga "ekonom" ni yozib qo'ydi. So'ng yozilgan qiymat ("ekonom", bo'sh bo'lmagan satr) truthy bo'lgani uchun blok bajarildi. Xato xabari yo'q, dastur jimgina noto'g'ri ishlayapti.
Agar o'zgaruvchi const bo'lsa, JavaScript hech bo'lmasa xato beradi:
const tarif = "komfort";
if (tarif = "ekonom") {
console.log("Ekonom tarif tanlandi");
}TypeError: Assignment to constant variable.Tarjimasi: "o'zgarmas (const) o'zgaruvchiga qiymat berildi". Shartda bu xatoni ko'rsangiz — = ni === ga almashtiring. Bu const ni ko'proq ishlatishning yana bir foydasi.
8.2 Jingalak qavssiz ikki qator
Blokda bitta qator bo'lsa, { } ni tashlab ketish mumkin: if (yosh >= 18) console.log("Mumkin");. Lekin bu xavfli odat:
const tolandi = false;
if (tolandi)
console.log("To'lov qabul qilindi");
console.log("Chek yuborildi");Konsolda:
Chek yuborildiTo'lanmagan buyurtmaga chek yuborildi! Qavssiz if faqat keyingi bitta qatorni boshqaradi. Ikkinchi console.log chekinish bilan yozilgan bo'lsa ham, if ga tegishli emas. Chekinish — faqat odam uchun, JavaScript unga qaramaydi. Qoida: har doim { } qo'ying, hatto bitta qator bo'lsa ham.
8.3 Shartdan keyin nuqtali vergul
const yosh = 12;
if (yosh >= 18); {
console.log("Kursga yozilishingiz mumkin");
}Konsolda:
Kursga yozilishingiz mumkin12 yoshli bola ham qabul qilindi. Sababi — ) dan keyingi ;. JavaScript uchun ; "bo'sh ko'rsatma". if shu bo'sh narsani boshqaradi. { ... } bloki esa if ga ulanmagan, oddiy blok sifatida har doim bajariladi. Xato xabari chiqmaydi — shuning uchun if (...) dan keyin ; bor-yo'qligiga e'tibor bering.
8.4 else dan oldin nuqtali vergul
const yosh = 20;
if (yosh >= 18) {
console.log("Mumkin");
};
else {
console.log("Mumkin emas");
}SyntaxError: Unexpected token 'else'Tarjimasi: "kutilmagan belgi: else". }; dagi ; if ni tugatib qo'ydi. Keyin kelgan else "egasiz" qoldi — u o'zidan oldin if blokini kutadi. Qoida: } va else orasida hech narsa bo'lmasin. Odatda ular bitta qatorda yoziladi: } else {.
8.5 0 < x < 10 deb yozish
Matematikada "x 0 dan 10 gacha" shunday yoziladi. JavaScript'da esa bu tuzoq:
const x = 15;
console.log(0 < x < 10); // true15 oraliqda emas, lekin natija true! JavaScript chapdan o'ngga hisoblaydi: 0 < 15 → true. Keyin true < 10 → true songa aylanadi (1), 1 < 10 → true. To'g'risi — ikki shartni && bilan ulash: x > 0 && x < 10.
8.6 x === "a" || "b" deb yozish
const kun = "dushanba";
if (kun === "shanba" || "yakshanba") {
console.log("Dam olish kuni!");
}Konsolda:
Dam olish kuni!Dushanba dam olish kuni bo'lib qoldi! || ning o'ng tomoni kun === "yakshanba" emas, shunchaki "yakshanba" satri. U esa har doim truthy. To'g'risi — har tomonda to'liq taqqoslash: kun === "shanba" || kun === "yakshanba".
8.7 Boshqa tillardan kelgan yozuvlar
elseif yoki elif JavaScript'da yo'q — faqat else if, ikki so'z bilan. Shartni qavssiz yozsangiz (if yosh >= 18 {), SyntaxError: Unexpected identifier 'yosh' chiqadi. Shart doim ( ) ichida.
9. Mashqlar
1-mashq (oson): Musbat, manfiy yoki nol
son o'zgaruvchisi berilgan. Son 0 dan katta bo'lsa — "Musbat", 0 dan kichik bo'lsa — "Manfiy", aks holda — "Nol" deb chiqaring. Kodni son = -4, son = 0 va son = 9 bilan sinab ko'ring.
Yechim
const son = -4;
if (son > 0) {
console.log("Musbat");
} else if (son < 0) {
console.log("Manfiy");
} else {
console.log("Nol");
}Konsolda:
ManfiyUchta variant bor, shuning uchun if, else if va else. else ga faqat son 0 bo'lganda yetib kelamiz — boshqa hamma holat oldingi ikki shartda ushlanadi.
2-mashq (o'rta): Kino chiptasi
Kinoteatrda chipta narxi yoshga bog'liq:
- 7 yoshgacha (7 kirmaydi) — bepul;
- 18 yoshgacha (18 kirmaydi) — 20 000 so'm;
- 60 va undan katta — 25 000 so'm;
- qolganlar — 40 000 so'm.
yosh o'zgaruvchisi bo'yicha narxni narx o'zgaruvchisiga yozing va Narx: ... so'm deb chiqaring. Bepul bo'lsa, narx 0. Ishora: narx ni if dan oldin let bilan yarating (7-bo'lim).
Yechim
const yosh = 65;
let narx;
if (yosh < 7) {
narx = 0;
} else if (yosh < 18) {
narx = 20000;
} else if (yosh >= 60) {
narx = 25000;
} else {
narx = 40000;
}
console.log(`Narx: ${narx} so'm`); // Narx: 25000 so'mIkkinchi shartda yosh >= 7 && yosh < 18 yozish shart emas. U yerga faqat yosh < 7 yolg'on bo'lganda yetib kelamiz. yosh = 5 bilan sinasangiz — Narx: 0 so'm, yosh = 30 bilan — Narx: 40000 so'm.
3-mashq (qiyin): Zinapoyani tekislang
Ro'yxatdan o'tish formasini tekshiradigan kod bor. U ishlaydi, lekin 3 qavat ichma-ich. Uni 6.2-bo'limdagidek tekis else if zanjiriga aylantiring. Natijalar o'zgarmasin.
const ism = " ";
const parol = "12345678";
const yosh = 17;
if (ism.trim() !== "") {
if (parol.length >= 8) {
if (yosh >= 16) {
console.log("Ro'yxatdan o'tdingiz!");
} else {
console.log("16 yoshdan kichiklar uchun emas");
}
} else {
console.log("Parol kamida 8 belgi bo'lsin");
}
} else {
console.log("Ismingizni kiriting");
}ism.trim() — matnni tozalash darsidagi metod: satr boshi va oxiridagi bo'sh joylarni olib tashlaydi. parol.length — satr uzunligi. Ishora: har bir shartni teskarisiga aylantiring (!== → ===, >= → <).
Yechim
const ism = " ";
const parol = "12345678";
const yosh = 17;
if (ism.trim() === "") {
console.log("Ismingizni kiriting");
} else if (parol.length < 8) {
console.log("Parol kamida 8 belgi bo'lsin");
} else if (yosh < 16) {
console.log("16 yoshdan kichiklar uchun emas");
} else {
console.log("Ro'yxatdan o'tdingiz!");
}Konsolda:
Ismingizni kiritingIsm faqat bo'sh joylardan iborat. trim() ularni olib tashladi va bo'sh satr "" qoldi — birinchi qo'riqchi ishladi. Har bir shart teskarisiga aylandi va o'z xato xabari bilan yonma-yon turibdi. Muvaffaqiyatli holat esa eng oxirida, else da. Yangi tekshiruv qo'shish ham oson: yana bitta else if qatori.
10. Real ishda
if — dasturlashdagi eng ko'p ishlatiladigan ko'rsatma. Uni har kuni yozasiz:
- Formalar: email to'g'rimi, parol yetarlicha uzunmi — har bir tekshiruv
if. - Ruxsatlar: foydalanuvchi tizimga kirganmi, admin emasmi — shunga qarab sahifa ochiladi yoki yopiladi.
- To'lov: Click yoki Payme'dan kelgan javobda to'lov holati tekshiriladi.
Jamoada kodingizni tekshirgan hamkasb ko'p yozadigan izoh: "Bu yerni qo'riqchi shart bilan tekislang". Intervyuda esa "if (x = 5) nima qiladi?" deb so'rashlari mumkin. Endi javobini bilasiz.
Xulosa
if (shart) { ... }— shart truthy bo'lsa blok bajariladi, falsy bo'lsa tashlab o'tiladi.else— "qolgan hamma holat";ifvaelsedan aniq bittasi ishlaydi.else ifzanjirida faqat birinchi rost shart ishlaydi — oraliqlarda eng qattiq shartni birinchi yozing.- Chuqur ichma-ich shartni qo'riqchi shartlar (guard clause) bilan tekislang: avval muammolar, oxirida asosiy ish.
- Blok ichida
letbilan yaratilgan o'zgaruvchi tashqarida ko'rinmaydi — uni blokdan oldin yarating. - Har doim
{ }qo'ying, shartda=emas===yozing,if (...)dan keyin;qo'ymang.
Keyingi dars: switch va uning muqobillari — bitta qiymatni ko'p variant bilan solishtirishning boshqa yo'li.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!