Javascript의 순수 함수

순수 기능 Yozishning Afzalliklari:


  • 깨끗한 코드 - barchaga tushinarli toza kod yozish;
  • 테스트 qilish juda oson;
  • Koddagi xatoni tuzatishga oson;
  • Alohida ajratilgan va Mustaqil funksiya;

  • 퓨어 펑션 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.

    분단 타쉬카리, 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;
    }
    


    한천 사업 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. 슈닝우춘비즈calculateGST funksiyasini pure function 뎁 노마시미즈 멈킨.

    Endi, quyidagi funksiyani ko'rib chiqamiz:

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


    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;
  • 돌연변이 ma'lumotlar(돌연변이 데이터;
  • Ekran yoki konsolga chop etish;
  • DOM so'rov/manipulatsiyasi;
  • Math.random();
  • Joriy vaqtni olish(현재 시간 얻기).
  • 좋은 웹페이지 즐겨찾기