Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Front-end
  3. JavaScript
  4. Yüksək səviyyəli funksiyalar (Higher Order Functions)

Yüksək səviyyəli funksiyalar (Higher Order Functions)

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb JavaScript
hofcurryingfunctionscallback
1 Yazı 1 Yazarlar 23 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • Elvin HuseynovE Oflayn
    Elvin HuseynovE Oflayn
    Elvin Huseynov
    üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    JavaScript proqramlaşdırma dilində yüksək səviyyəli funksiyalar (Higher Order Functions - HOF) böyük əhəmiyyətə malikdir. Bu funksiyalar başqa funksiyaları arqument kimi qəbul edə və ya nəticə olaraq yeni bir funksiya qaytara bilərlər. Bu yanaşma kodun çevikliyini artırır, abstraksiyaları qurmağa və funksional proqramlaşdırma prinsiplərini tətbiq etməyə imkan verir.

    Bu məqalədə yüksək səviyyəli funksiyaların işləmə prinsipini başa düşmək üçün bir neçə nümunəyə baxacağıq.


    1. setTimeout() – Yüksək səviyyəli funksiya

    JavaScript-in qlobal setTimeout() funksiyası yüksək səviyyəli funksiyalara aid edilir, çünki o, bir funksiyanı arqument kimi qəbul edir və müəyyən müddət keçdikdən sonra icra edir.

    Aşağıdakı nümunədə setTimeout() funksiyası 5 saniyə sonra ekrana mesaj çıxarır:

    setTimeout(
      () => {console.log('Bax, mən buradayam!')},
      5000
    )
    

    Burada setTimeout() callback funksiyasını arqument kimi qəbul edir və müəyyən müddətdən sonra onu işlədir.


    2. map() – Massivlərdə yüksək səviyyəli funksiya

    JavaScript-də bir çox massiv metodları da yüksək səviyyəli funksiyalara aiddir. Bunlar sırasına .map(), .filter(), .reduce() və digər metodlar daxildir.

    Məsələn, .map() funksiyası bir callback funksiyasını arqument kimi qəbul edərək, massivdəki hər elementi dəyişdirən yeni bir massiv qaytarır:

    const years = [1970, 1990, 1995];
    
    const objects = years.map(item => {
      return { year: item };
    });
    
    console.log(objects);
    // [ { year: 1970 }, { year: 1990 }, { year: 1995 } ]
    

    Burada .map() funksiyası item dəyişənini arqument kimi qəbul edir və hər birini obyekt formatına çevirən yeni bir massiv qaytarır.


    3. Çoxistifadəli funksiyaların rahat qurulması

    Yüksək səviyyəli funksiyalar “funksiyanı qismən tətbiq etmə” (Partial Application) prinsipindən istifadə etməyə imkan verir.

    Bu yanaşmada bir funksiya bütün arqumentlərini dərhal qəbul etmək əvəzinə, əvvəlcə bir hissəsini qəbul edir və yeni bir funksiya qaytarır. Bu yeni funksiya qalan arqumentləri qəbul etdikdən sonra tam işləyir.

    Gəlin bunu bir nümunə üzərində izah edək. Aşağıda məlumatların mənbəyini (source) göstərən sadə bir log funksiyası yaradaq:

    const log = (sourceName, message) => {
      console.log(sourceName, ':', message);
    };
    

    Bu funksiyanı işlədərkən hər dəfə mənbənin adını yazmaq lazımdır, bu isə qeyri-effektivdir:

    log('Modul A', 'Başladı');
    // Modul A: Başladı
    
    log('Modul A', 'Torpağın test edilməsi tamamlandı');
    // Modul A: Torpağın test edilməsi tamamlandı
    

    Hər dəfə "Modul A" yazmaq əvəzinə onu yadda saxlayan yeni bir funksiya yarada bilərik.

    Əgər bir funksiyanı elə yazsaq ki, o, əvvəlcə mənbə adını qəbul edib yeni bir funksiya qaytarsın, onda onu daha rahat istifadə edə bilərik:

    // Yüksək səviyyəli funksiya - currying tətbiqi
    const log = sourceName => message => {
      console.log(sourceName, ':', message);
    };
    

    İndi log() funksiyası birinci çağırışda mənbəni yadda saxlayır və ikinci çağırışda mesajı qəbul edərək nəticəni qaytarır:

    const logAppolo = log('Appolo 13');
    
    logAppolo('Huston…');
    // Appolo 13: Huston…
    
    logAppolo('Huston, problemimiz var');
    // Appolo 13: Huston, problemimiz var
    

    Bu yanaşma “currying” adlanır və funksional proqramlaşdırmada geniş istifadə edilir.


    Nəticə

    Yüksək səviyyəli funksiyalar JavaScript-də funksiyaları arqument kimi qəbul etmək və ya nəticə olaraq funksiyalar qaytarmaq imkanı verir. Bu, kodun modulyarlığını, çevikliyini və yenidən istifadə edilə bilməsini artırır.

    Əsas üstünlükləri:
    ✔ Callback funksiyaları ilə işləmək imkanı
    ✔ Kodun təkrar istifadəsini artırır
    ✔ Modulyar və daha rahat istifadə edilə bilən kod yazmağa kömək edir
    ✔ Funksional proqramlaşdırma prinsiplərini tətbiq etməyə imkan yaradır

    Əgər siz daha təmiz və funksional kod yazmaq istəyirsinizsə, yüksək səviyyəli funksiyalardan istifadə etməyi öyrənmək çox vacibdir! 🚀

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar