Shartli operatorlari `if`, `?`(Conditional branching)
Ba'zan biz turli shartlarga asoslangan holda turli harakatlarni bajarishimiz kerak bo‘ladi.
Shartli operatorlari if, ?(Conditional branching).
Ba'zan biz turli shartlarga asoslangan holda turli harakatlarni bajarishimiz kerak bo‘ladi.
Buni amalga oshirish uchun biz if bayonotidan va shartli operator ? dan foydalanishimiz mumkin. ? operatori "savol belgi" operatori deb ham ataladi.
if bayonoti
if(...) bayonoti qavs ichidagi shartni baholaydi va agar natija true (to‘g‘ri) bo‘lsa, kod blokini bajaradi.
Masalan:
Yuqoridagi misolda, shart oddiy tenglikni tekshirish (year == 2015), lekin bu juda murakkab bo‘lishi mumkin.
Agar bir nechta bayonotlarni bajarishimiz kerak bo‘lsa, kod blokini qavslar ichida yozishimiz kerak:
Har doim if bayonotida qavslarni {} ishlatishni tavsiya qilamiz, hatto bitta bayonot bajarilsa ham. Bu kodni o'qish va tushunishni osonlashtiradi.
Boolean konversiyasi
if (...) bayonoti qavs ichidagi ifodani baholaydi va natijani boolean (true yoki false) ga aylantiradi.
Esimizda tutaylik, konversiya qoidalari quyidagicha:
- Raqam 0, bo‘sh string "", null, undefined va NaN
falsega aylantiriladi. Shuning uchun ular "falsy" qiymatlar deb ataladi. - Boshqa qiymatlar
truega aylantiriladi, shuning uchun ular "truthy" qiymatlar deb ataladi.
Shuning uchun, quyidagi shart bajarilmaydi:
Va bu shart esa har doim bajariladi:
Shuningdek, oldindan baholangan boolean qiymatni if ga uzatishimiz mumkin:
else bayonoti
if bayonoti ixtiyoriy else blokini o‘z ichiga olishi mumkin. Bu blok shart false bo‘lganida bajariladi.
Masalan:
Bir nechta shartlar: else if
Ba'zan bir nechta shart variantlarini tekshirishimiz kerak bo‘ladi. else if bloklari bunga yordam beradi.
Masalan:
Yuqoridagi kodda, JavaScript avval year < 2015 shartini tekshiradi. Agar bu false bo‘lsa, keyingi shart year > 2015 tekshiriladi. Agar bu ham false bo‘lsa, so‘nggi alert ko‘rsatiladi.
Bir nechta else if bloklari bo‘lishi mumkin. Yakuniy else ixtiyoriydir.
Shartli operator ?
Ba'zan shartga qarab o‘zgaruvchiga qiymat berishimiz kerak bo‘ladi.
Masalan:
Shartli yoki "savol belgi" operatori buni qisqa va oddiy tarzda amalga oshirishi mumkin.
Operator ? bilan ifodalanadi. Ba'zida bu "ternary" operatori deb ataladi, chunki operator uchta operandga ega. JavaScriptda bu faqat bitta operator.
Sintaksisi:
Shart baholanadi: agar true bo‘lsa, value1 qaytariladi, aks holda — value2.
Masalan:
Texnik jihatdan age > 18 qavslarni olish mumkin, chunki savol belgi operatori pastroq ustunlikka ega, shuning uchun taqqoslashdan keyin bajariladi.
Yuqoridagi misol xuddi shu ishni amalga oshiradi:
Lekin qavslar kodni o'qish va tushunishni osonlashtiradi, shuning uchun ularni ishlatishni tavsiya qilamiz.
Iltimos, yuqoridagi misolda savol belgi operatorini ishlatmaslik mumkin, chunki taqqoslash o‘zi true/false qaytaradi:
Bir nechta ?
Bir qator savol belgi operatorlari ? bir nechta shartlarga asoslangan qiymatni qaytarishi mumkin.
Masalan:
Boshida murakkab ko‘rinishi mumkin, lekin diqqat bilan qaraganda, bu oddiy testlar ketma-ketligi:
- Birinchi savol belgi operatori
age < 3tekshiradi. Agartruebo‘lsa — 'Salom, chaqaloq!' qaytariladi. Aks holda, keyingi ifodaga o‘tiladi,age < 18tekshiriladi. - Agar bu
truebo‘lsa — 'Salom!' qaytariladi. Aks holda, keyingi ifodaga o‘tiladi,age < 100tekshiriladi. - Agar bu
truebo‘lsa — 'Salom!' qaytariladi. Aks holda, so‘nggi ifodaga o‘tiladi va 'Qanday g‘aroyib yosh!' qaytariladi.
Mana shu kodni if..else yordamida ko‘rsatuvchi variant:
Noan'anaviy foydalanish
Ba'zida savol belgi ? if o‘rniga ishlatiladi:
Shart company == 'Netscape' ga qarab, yoki birinchi yoki ikkinchi ifoda bajariladi va alert ko‘rsatiladi.
Bu yerda natijani o‘zgaruvchiga belgilamaymiz. Buning o‘rniga, shartga qarab turli kodlar bajariladi.
Bu usulni ishlatishni tavsiya etmaymiz.
Bu yozish shakli if bayonotidan qisqaroq, ba'zi dasturchilar uchun jozibali bo‘lishi mumkin, lekin o'qish qiyinroq.
Mana shu kodning if yordamida ko‘rsatilgan variant:
Kodni vertikal tarzda ko‘rishimiz kerak. Ko‘p qatorli kod bloklari uzundan-uzoq ko‘rsatmalardan osonroq tushuniladi.
Savol belgi operatorining maqsadi — shartga qarab bir qiymatni yoki boshqa qiymatni qaytarish. Faqat shu maqsad uchun foydalaning. Agar turli kodlarni bajarishingiz kerak bo‘lsa, if bayonotidan foydalaning.
Last updated on