Mantiqiy Operatorlar(Logical operators)
JavaScript'da to'rtta mantiqiy operator mavjud `||` (OR), `&&` (AND), `!` (NOT), va `??` (Nullish Coalescing). Biz ushbu maqolada birinchi uchtasi haqida batafsil tushuntiramiz, `??` operatori esa keyingi maqolada ko‘rib chiqiladi.
Mantiqiy Operatorlar
JavaScript'da to'rtta mantiqiy operator mavjud ||
(OR), &&
(AND), !
(NOT), va ??
(Nullish Coalescing). Biz ushbu maqolada birinchi uchtasi haqida batafsil tushuntiramiz, ??
operatori esa keyingi maqolada ko‘rib chiqiladi.
Garchi ularni "mantiqiy" deb atashsa ham, ular faqat boolean qiymatlar bilan emas, balki har qanday turdagi qiymatlar bilan ishlaydi. Ularning natijalari ham har qanday turda bo'lishi mumkin.
||
(OR)
"OR" operatori ikki vertikal chiziq belgilari bilan ifodalanadi:
Klassik dasturlashda, mantiqiy OR faqat boolean qiymatlar bilan ishlashni anglatadi. Agar uning har qanday argumenti true
bo'lsa, u true
qaytaradi, aks holda false
qaytaradi.
JavaScriptda esa operator biroz murakkab va kuchliroq. Keling, boolean qiymatlar bilan qanday ishlashini ko'rib chiqamiz.
To'rt xil mantiqiy kombinatsiya mavjud:
Natija har doim false
bo‘lgan holatdan tashqari, har doim true
bo'ladi.
Agar operand boolean bo'lmasa, u boolean qiymatga konvertatsiya qilinadi.
Misol uchun, raqam 1 true
sifatida, 0 esa false
sifatida qaraladi:
OR ||
operatori ko‘pincha if
bayonotida ishlatiladi, agar berilgan shartlardan har biri to‘g‘ri bo‘lsa.
Misol:
Bir nechta shartlarni ham o‘tkazish mumkin:
OR "||"
operatori birinchi truthy
qiymatni topadi:
Ko'plab OR qiymatlari berilganida:
OR ||
operatori quyidagicha ishlaydi:
- Operandlarni chapdan o'ngga baholaydi.
- Har bir operandni boolean ga konvertatsiya qiladi. Agar natija
true
bo'lsa, darhol o'sha operandning asl qiymatini qaytaradi. - Agar barcha operandlar baholangan bo'lsa (ya'ni, hammasi
false
bo'lsa), oxirgi operandni qaytaradi.
Boshqacha qilib aytganda, OR ||
operatori birinchi truthy
qiymatni yoki truthy
qiymat topilmasa, oxirgi qiymatni qaytaradi.
Misollar:
Qiziqarli foydalanish: ro‘yxatdagi birinchi truthy
qiymatni olish.
Misol:
Agar barcha o'zgaruvchilar falsy bo'lsa, "Anonymous" ko'rsatiladi.
Qisqa tutish tahlili
OR ||
operatorining yana bir xususiyati "qisqa tutish" tahlili deyiladi.
Bu, ||
o‘z argumentlarini birinchi truthy
qiymat topilguncha ishlaydi va keyin darhol qaytaradi, boshqa argumentlarni tekshirmay.
Agar operand faqat qiymat bo'lmasa, balki o'zgaruvchini tayinlash yoki funksiya chaqiruvi kabi yon effektli ifodalar bo'lsa, bu xususiyat juda muhim.
Quyidagi misolda, faqat ikkinchi xabar chop etiladi:
Birinchi qator true
ni ko'rib chiqishi bilan, OR ||
operatori baholashni to'xtatadi, shuning uchun alert
ishga tushmaydi.
Ba'zan, bu xususiyatni, faqat chapdagi qismlar falsy bo'lsa, buyruqlarni bajarish uchun ishlatishadi.
&&
(AND)
AND
operatori ikki ampersand &&
bilan ifodalanadi:
Klassik dasturlashda, AND
operatori har ikkala operand ham truthy
bo'lsa true
qaytaradi va aks holda false
qaytaradi:
if
bayonoti bilan misol:
OR
kabi, AND
operatori ham har qanday qiymatni operand sifatida oladi:
AND “&&”
operatori birinchi falsy
qiymatni topadi:
Bir nechta AND
qiymatlari berilganida:
AND &&
operatori quyidagicha ishlaydi:
- Operandlarni chapdan o'ngga baholaydi.
- Har bir operandni boolean ga konvertatsiya qiladi. Agar natija
false
bo'lsa, darhol o'sha operandning asl qiymatini qaytaradi. - Agar barcha operandlar baholangan bo'lsa (ya'ni, hammasi
truthy
bo'lsa), oxirgi operandni qaytaradi.
Boshqacha qilib aytganda, AND
operatori birinchi falsy
qiymatni yoki falsy
qiymat topilmasa, oxirgi qiymatni qaytaradi.
Qoidalar OR
bilan o'xshash. Farqi shundaki, AND
birinchi falsy
qiymatni qaytaradi, OR
esa birinchi truthy
qiymatni qaytaradi.
Misollar:
Bir nechta qiymatlarni ketma-ket uzatish mumkin. Birinchi falsy
qaytariladi:
Agar barcha qiymatlar truthy
bo'lsa, so'nggi qiymat qaytariladi:
AND &&
Pretsedensi OR ||
dan yuqori
AND &&
operatorining pretsedensi OR ||
dan yuqori.
Shunday qilib, a && b || c && d
kodi aslida (a && b) || (c && d)
kabi ishlaydi.
if
bilan o‘rnini almashtirmang
Ba'zan AND &&
operatori if
uchun qisqaroq yo'l sifatida ishlatiladi.
Misol:
AND &&
ning o‘ng qismining bajarilishi faqat agar (x > 0)
haqiqiy bo‘lsa amalga oshiriladi.
Shunday qilib, biz if
bilan quyidagilarni olishimiz mumkin:
Garchi &&
variant qisqaroq ko'rinsa ham, if
operatori yanada aniqroq va o‘qilishi osonroq bo‘ladi. Shuning uchun har bir konstruktsiyani o‘z maqsadiga muvofiq ishlatish tavsiya etiladi: if
ni agar if
kerak bo'lsa ishlating va &&
ni AND
kerak bo'lsa ishlating.
!
(NOT)
Boolean NOT operatori !
belgilari bilan ifodalanadi:
Operator bitta argumentni qabul qiladi va quyidagilarni bajaradi:
- Operandni boolean turiga o‘zgartiradi:
true
/false
. - Qarama-qarshi qiymatni qaytaradi.
Misollar:
Ikki marta NOT
!!
ba'zan qiymatni boolean turiga o‘zgartirish uchun ishlatiladi:
Birinchi NOT
qiymatni boolean ga o‘zgartiradi va uni qarama-qarshi qiladi, ikkinchi NOT
yana bir bor qarama-qarshi qiladi. Natijada biz oddiy qiymatni boolean ga o‘zgartirishni olamiz.
Buni amalga oshirishning boshqa bir usuli – Boolean
funktsiyasidir:
NOT !
operatorining pretsedensi barcha mantiqiy operatorlardan yuqori, shuning uchun u har doim &&
yoki ||
dan
oldin bajariladi.