Null va undefined qiymatlarni filterlashning yangi usuli
?? operatori JavaScriptda yangi hisoblanadi, shu sabab eski brauzerlarda ishlamasligi mumkin.
Table of contents
Kirish
null
yoki undefined
qiymatlarni ajratishning ko'p usullari bor. Masalan, &&
yoki ?. ya'ni someData?.doSomething()
operatorlari. JavaScriptda yangi e'lon qilingan operator ??
ham shu vazifani bajaradi. JS tilida "nullish coalescing operator" deb yuritiladi.
Funksiyasi
??
operatori, yuqorida aytganimizdek, faqat null
va undefined
qiymatlarini tekshiradi. Masalan, a ?? b
birikmasi:
agar
a
aniq ya'ni "yaroqli" yoki aniq bo'lsa, demaka
,agar
a
null/undefined
bo'lsa
Aslida, ??
operatori tamoman yangi narsa emas. Bu faqatgina sintaksni biroz qisqartirish. Masalan:
let data = a ?? b;
let data2 = (a !== null && b !== undefined) ? a : b;
Yuqoridagi data
va data2
o'zgaruvchilari bir xil funksiyani bajaradi.
❗?
operatori haqida batafsil bu yerda.
Keling, boshqa misollarni ham ko'rib chiqamiz:
let data;
console.log(data ?? "Valid data"); // Valid data
// chunki
console.log(data); // undefined
Yoki
let data = "Leaked data from Pentagon👽";
console.log(data ?? "Just joking🙂"); // Leaked data from Pentagon👽
?? bilan bir nechta qiymatlar
Aytaylik, biz bir qator qiymatlarni qabul qilishimiz kerak. Bu holatda, ??
ushbu qiymatlarning birinchi uchragan yaroqli (aniq) ma'lumotni qaytaradi. Masalan:
let data1 = null;
let data2 = null;
let data3 = "Found valid data";
console.log(data1 ?? data2 ?? data3 ?? "You'll never see this message"); // Found valid data
|| va ??
let data1 = null;
let data2 = null;
let data3 = "Valid data";
console.log(data1 || data2 || data3 || "Learn JS"); // Valid data
E'tibor bering, yuqoridagi kodda ||
va ??
operatorlar bir xil natijani berdi. Unda, bu operatorlar orasida farq nima?
Farq shundaki:
||
birinchitruthy
qiymatni qaytaradi,??
birinchianiq
qiymatni qaytaradi.
Qisqasini aytganda, ||
falsy qiymatlarni ajratmaydi. (Falsy/truthy qiymatlar haqida batafsil bu yerda).
??
ning ustunlik tomoni shuki, biz undan biror data uchun standart yoki "default" qiymatni belgilab olishda foydalansak bo'ladi. Masalan:
let age = 0;
console.log(age || 18); // 18
console.log(age ?? 18); // 0
Ya'ni:
||
birinchiage
ni tekshiradi va0
ni qabul qiladi, qaysikifalsy
qiymat.- demak,
||
18
ni qaytaradi.
- demak,
??
avvalage
ni tekshiradi va0
ni qabul qiladi. Lekin, bu qiymatnull/undefined
emas.- shu sabab, biz
0
qiymatni qabul qilamiz.
- shu sabab, biz
E'tiboringiz uchun rahmat. Sizga foydali bo'ladi degan umiddaman. Sizga maslahatim, pastda "Subscribe to my newsletter" bo'limida email pochtangizni qoldiring va darslarni e'lon qiligandayoq pochtangizga qabul qiling.
Agar darsliklar sizga yoqayotgan bo'lsa, bizni kuzatib borishingiz mumkin: