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
false
ga aylantiriladi. Shuning uchun ular "falsy" qiymatlar deb ataladi. - Boshqa qiymatlar
true
ga 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 < 3
tekshiradi. Agartrue
bo‘lsa — 'Salom, chaqaloq!' qaytariladi. Aks holda, keyingi ifodaga o‘tiladi,age < 18
tekshiriladi. - Agar bu
true
bo‘lsa — 'Salom!' qaytariladi. Aks holda, keyingi ifodaga o‘tiladi,age < 100
tekshiriladi. - Agar bu
true
bo‘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.