DEV Community

Davron
Davron

Posted on

Pure Function in Javascript

Pure Function Yozishning Afzalliklari:

  • clean code - barchaga tushinarli toza kod yozish;
  • Test qilish juda oson;
  • Koddagi xatoni tuzatishga oson;
  • Alohida ajratilgan va Mustaqil funksiya;

Pure Function o'zi nima?

Pure Function - Agar bir xil argumentlar beeriladigan bo'lsa doim bir xil natija qaytaradigan funksiya. Bu Funksiyalar hech qanday holatga yoki dasturning bajarilishi davomida ma'mulotlarning o'zgarishiga bog'liq emas, ular o'z argumentlariga bog'liq.

Bundan tashqari, pure function network request yoki ma'lumotlar mutatsiyasi kabi kuzatilishi mumkin bo'lgan nojo'ya ta'sirlarni keltirib chiqarmaydi.

Quyidagi Javscript funksiyani ko'rib chiqaylik:

function calculateGST( productPrice ) {
    return productPrice * 0.05;
}
Enter fullscreen mode Exit fullscreen mode

Agar biz productPrice uchun bir hil qiymat bersak, Yuqoridagi funksiya doim bir hil javob qaytaradi. Ya'ni funksiya qaytaradigan qiymatga boshqa tashqi qiymatlar yoki holatlar ta'sir o'tkaza olmaydi. Shuning uchun biz calculateGST funksiyasini pure function deb nomlashimiz mumkin.

Endi, quyidagi funksiyani ko'rib chiqamiz:

var tax = 20;
function calculateGST( productPrice ) {
    return productPrice * (tax / 100) + productPrice;
}
Enter fullscreen mode Exit fullscreen mode

Ushbu funksiya pure function yoki yo'qligini taxmin qila olasizmi?

Toppa to'gri, bu pure function emas, sababi funksiya qaytaradigan qiymat o'zidan tashqarida turgan tax deb nomlanuvchi o'zgaruvchiga bog'liq. Agar keyinchalik o'zgaruvchining qiymati o'zgarsa biz funksiya parametriga eski productPrice' ni bersak ham funksiya boshqacha qiymat qataradi.

Ammo bir narsani yodda tutishimiz kerak.

Eslatma: Agar pure funksiya pure funksiyani chaqiradigan bo'lsa bu hech qanday yomon ta'sir olib kelmaydi va chaqirayotgan funksiya pure function hisoblanadi(Masalan: funksiyani ichida Math.max()'dan foydalanish).

Quyida funksiyalar pure function bo'lishi uchun keltirib chiqarmasligi kerak bo'lgan side effect'larni ko'rib chiqamiz:

  • HTTP so'rov yaratish;
  • Mutatsion ma'lumotlar(mutating data;
  • Ekran yoki konsolga chop etish;
  • DOM so'rov/manipulatsiyasi;
  • Math.random();
  • Joriy vaqtni olish(getting current time).

Latest comments (0)