Null va undefined qiymatlarni filterlashning yangi usuli

Null va undefined qiymatlarni filterlashning yangi usuli

?? operatori JavaScriptda yangi hisoblanadi, shu sabab eski brauzerlarda ishlamasligi mumkin.

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, demak a,

  • 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:

  • || birinchi truthy qiymatni qaytaradi,

  • ?? birinchi aniq 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:

  • || birinchi age ni tekshiradi va 0 ni qabul qiladi, qaysiki falsy qiymat.

    • demak, || 18 ni qaytaradi.
  • ?? avval age ni tekshiradi va 0 ni qabul qiladi. Lekin, bu qiymat null/undefined emas.

    • shu sabab, biz 0 qiymatni qabul qilamiz.

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: