Bugungi maqolamiz Javascriptda mantiqiy operatorlar haqida. (Logical operators)
JavaScriptda mantiqiy operatorlar 3
Bismillah.
Demak cho’zib o’tirmayman va dangal tushuntirishga harakat qilaman.
Bilamiz, JavaScriptda falsy va truthy qiymatlar degan tushuncha mavjud.
Bu ikki tushuncha bizga berilayotgan qiymatlarni tekshirishimizda yordam beradi.
Misol uchun, o’zgaruvchi null, undefined, «», 0 bo’lsa dasturimizda ma’lum xatoliklar kelib chiqishi mumkinligi tabiiy hol.
Ularni ajratib turadigan ikki tushuncha esa falsy va truthy. Falsy qiymatlar ushbular:
null
undefined
0 (nol va nol qiymatlar)
«» (bo’sh string)
false
NaN
Ushbular falsy qiymatlar bo’lsa ulardan qolgan barcha qiymatlar truthy qiymatlar hisoblanadi.
Misol uchun:
15, «bo’sh bo’lmagan string», {objectlar: 1}, [‘arraylar’], true , …vaHokazo
Endi falsy va truthy qiymatlar bilan ishlash, ikki va undan ortiq qiymatlarni ichidan falsy yoki truthy qiymatlarni ajratib olishlar bilan shug’ullanadigan operatorlar mavjud. Ularning nomi mantiqiy operatorlar.
JSda 4 ta mantiqiy operatorlar mavjud.
Ular:
&& — AND (va) operatori
|| — OR (yoki) operatori
! — NOT (…emas) operatori
?? — Nullish coalescing (tarjimasini bilmiman
)
Demak boshladik.&& (AND) operatori
&& operatori – chapdan o’ngga yurib ilk falsy bo’lgan qiymatni aniqlab beradi.
Uning sharti shuki, barcha qiymatlar truthy bo’lishi kerak. Agar qiymatlar ichidan biror falsy qiymat chiqsa, shu zahoti tekshirish jarayoni to’xtaydi.
Nima qiymat qaytaradi ?
Agar if va shu kabi true va false qiymatni qabul qiladigan jarayonlar ichida bo’lsa true yoki false qaytaradi. Agar ulardan tashqarida bo’lsa, misol uchun o’zgaruvchiga qiymat berayotganda ishlatsak, u ayni to’xtagan falsy qiymatni qaytaradi yoki falsy yo’q bo’lsa eng oxirgi qiymatni. Misol uchun:
if(true && false) // javob false chiqadi. chunki false qiymati mavjud
if(0 && 6) // false qaytadi, chunki nol falsy qiymat
if(10 && «string qiymat») // true
let x = 100 && 0 && 500; // x = 0
let x = 100 && 22 && 26; // x = 26
P.S: bu sintaks juda kam ishlatiladi.
Ushbu operatorni shaxsan o’zim if, else if… larda qat’iy tekshiruvlar uchun ko’p ishlataman. Misol uchun html input ni qiymatini tekshirishda:
if (inputValue1 && inputValue2) {…}
O’zingiz ham ushbu operatorlar bilan shug’ullanib ko’ring. Men esa davom etaman.|| (OR) operatori
|| operatori – chapdan o’ngga yurib ilk truthy bo’lgan qiymatni aniqlab beradi.
Uning sharti shuki, qiymatlardan biri truthy bo’lishi kerak. Agar qiymatlar ichidan biror truthy qiymat chiqsa, shu zahoti tekshirish jarayoni to’xtaydi.
Nima qiymat qaytaradi ?
Agar if va shu kabi true va false qiymatni qabul qiladigan jarayonlar ichida bo’lsa true yoki false qaytaradi. Agar ulardan tashqarida bo’lsa, misol uchun o’zgaruvchiga qiymat berayotganda ishlatsak, u ayni to’xtagan truthy qiymatni qaytaradi yoki umuman truthy yo’q bo’lsa eng oxirgi qiymatni. Misol uchun:
if(true || false) // javob true chiqadi. chunki truthu qiymat mavjud
if(0 || 6) // true qaytadi, chunki 6 truthy qiymat
if(10 || «string qiymat») // true
if(undefined || null) // false
let x = 100 || 0 || 500; // x = 100, chunki ilk truthy qiymat bu 100
let x = 100 || 22 || 26; // x = 100
let x = undefined || null // x = null
! – NOT (…emas) operatori
! (NOT) operatori – truthy qiymatni false ga , falsyni true ga alishtirib beradi , hullas bu operator orqali har qanday qiymatni tipini boolean ga o’girsak bo’ladi.
Misollar:
let val = 120;
console.log(!val) // false
val = undefined;
console.log(!val) // true
Shuningdek bu belgini ketma ket bir necha marta ishlatsak bo’ladi. U holatda true / false qiymatlari aylanib turadi.
Misol:
val = «truthy string»;
console.log(!!val) // true
console.log(!!!val) // false
va hokazo.
Bu operatorni shaxsan o’zim juda ko’p o’rinlarda ishlataman. Chunki qiymatlarni boolean tipiga aylantirishda juda qulay. Yana bu operator orqali tekshiruvlarni osongina bajarsak bo’ladi. Taqqoslash jarayonini teskariga aylantirishimiz ham mumkin. Misol uchun quyidagi kodda x ning qiymat y ga teng bo’lmasa alert ishlaydi:
let x = 10;
let y = 12;
x !== y ? alert(«teng emas») : alert(«qiymatlar teng»);
Yana misollar juda ko’p. O’zingizdan harakat talab qilinadi.
?? – Nullish coalescing
Ushbu operatorga esa truthy va falsy degan tushunchalar notanish. Bu operator birinchi qiymati belgilangan o’zgaruvchini qaytaradi.
Sharti – berilgan qiymat null/undefined bo’lmasligi. Bu holatda || (OR) operatori ilg’amagan bizga qulay bo’lgan bir necha holatlar ro’y beradi. Misol uchun ba’zida biz nol va bo’sh stringlarni «valid» qiymat sifatida olishimiz kerak bo’lib qoladi. Bu holatda || operatori ojiz qoladi. Taqqoslaymiz:
0 || 100 // 100 qaytadi va nolni il’gamadi, ya’ni nol falsy qiymat deb biladi
0 ?? 100 // 0, nol ni javob sifatida qaytaradi. Chunki bu «valid» qiymat. // null yoki undefined emas.
null ?? 12 ?? 3 // 12
va hokazo.
Shu bilan maqolam shu joyda to’xtaydi.
Vaqtlarim biroz tig’iz bo’lgani uchun murakkablashtirib o’tirmadim.
Maslahat berardimki, ushbu operatorlarni o’zingiz ham sinab ko’ring va yangi bilimlarni qidiring.
Muallif: @JoshDeveloper