Mantiqiy operatorlar
JavaScript'da uchta mantiqiy operator bor: || (YOKI), && (VA) va ! (EMAS). Ular "mantiqiy" deb atalsa-da, aslida istalgan turdagi qiymatlarga qo'llaniladi va natija sifatida ham istalgan turdagi qiymat qaytarishi mumkin. Keling, chuqur o'rganamiz.
|| (YOKI)
Ikki operandli oddiy holatda || agar operandlardan hech bo'lmaganda bittasi true bo'lsa, true qaytaradi:
Agar operand boolean bo'lmasa, u tekshirish uchun boolean'ga o'giriladi:
|| birinchi truthy qiymatni topadi (short-circuit)
Endi || ning JavaScript'ga xos kuchli xususiyatini ko'ramiz. U shunday ishlaydi:
- Operandlarni chapdan o'ngga baholaydi;
- Har birini boolean'ga o'giradi. Agar natija
truebo'lsa โ to'xtaydi va o'sha operandning asl (o'girilmagan) qiymatini qaytaradi; - Agar barcha operandlar false bo'lsa โ oxirgi operandni qaytaradi.
Ya'ni || boolean emas, balki birinchi truthy qiymatni yoki barchasi falsy bo'lsa โ oxirgisini qaytaradi:
Bu xususiyatning amaliy qo'llanishi โ ro'yxatdan birinchi "to'ldirilgan" qiymatni tanlash:
|| zanjiri qiymatlarni chapdan o'ngga tekshiradi. Bo'sh matn va null falsy bo'lgani uchun ular o'tkazib yuboriladi, birinchi truthy qiymat โ "SuperUser" tanlanadi.Qisqa tutashuv (short-circuit evaluation)
|| ning yana bir xususiyati โ qisqa tutashuv. Chapdagi operand truthy bo'lsa, o'ngdagisi umuman baholanmaydi. Bu, agar operandda funksiya chaqiruvi yoki qo'shimcha ta'sir (side effect) bo'lsa, muhim:
if o'rniga ishlatish mumkin, lekin bu kodni o'qishni qiyinlashtiradi. Amallar uchun if, qiymat tanlash uchun || dan foydalaning.&& (VA)
&& operatori oddiy holatda ikkala operand ham true bo'lgandagina true qaytaradi:
&& birinchi falsy qiymatni topadi
&& ham xuddi || kabi qiymat qaytaradi, lekin teskarisicha ishlaydi:
- Operandlarni chapdan o'ngga baholaydi;
- Har birini boolean'ga o'giradi. Agar natija
falsebo'lsa โ to'xtaydi va o'sha operandning asl qiymatini qaytaradi; - Agar barcha operandlar truthy bo'lsa โ oxirgisini qaytaradi.
Ya'ni && birinchi falsy qiymatni, yoki hech biri falsy bo'lmasa โ oxirgisini qaytaradi:
&& ustuvorligi || dan yuqori. Shuning uchun a || b && c aslida a || (b && c) deb hisoblanadi. Chalkashlikdan qochish uchun murakkab ifodalarda qavs ishlating.! (EMAS)
! operatori bitta operandga qo'llaniladi va quyidagicha ishlaydi:
- Operandni boolean'ga o'giradi:
true / false; - Uning teskarisini qaytaradi.
Ikki marta !! qo'llash โ qiymatni boolean'ga o'girishning keng tarqalgan usuli (xuddi Boolean() kabi):
! operatorining ustuvorligi barcha mantiqiy operatorlar ichida eng yuqori. Shuning uchun u har doim && va || dan oldin bajariladi.Amaliy qo'llanish
Mantiqiy operatorlarning qiymat qaytarish xususiyati amalda juda foydali. Masalan, standart (default) qiymat berish:
&& esa "agar rost bo'lsa, bajar" mantig'i uchun ishlatiladi:
Xulosa
||โ birinchi truthy qiymatni (yoki oxirgisini) qaytaradi;&&โ birinchi falsy qiymatni (yoki oxirgisini) qaytaradi;!โ qiymatni boolean'ga o'girib, teskarisini qaytaradi;!!โ boolean'ga o'girish;- Qisqa tutashuv: kerak bo'lmasa, o'ng operand baholanmaydi;
- Ustuvorlik:
!>&&>||; - Amaliy: default qiymat (
||) va shartli bajarish (&&).