CodeGym /Kurslar /Frontend SELF AZ /Ali səviyyəli funksiyalar

Ali səviyyəli funksiyalar

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

5.1 Əsas konseptlər

Ali dərəcəli funksiyalar funksional proqramlaşdırmanın vacib bir aspektidir və JavaScript-də geniş istifadə olunur. Onlar daha abstrakt, kompakt və təkrar istifadəyə yararlı kod yazmağa imkan verir.

Ali dərəcəli funksiyalar nədir?

Ali dərəcəli funksiyalar (higher-order functions) — bunlar, başqa funksiyaları arqument kimi qəbul edən və ya nəticə olaraq funksiyaları qaytaran funksiyalardır. Onlar funksiyaları birinci dərəcə obyektlər kimi istifadə etməyə imkan verir, bu isə daha abstrakt və modullu proqramlar yaradılmasını təmin edir.

Ali dərəcəli funksiyaların nümunələri

  1. Funksiyaların arqument kimi ötürülməsi.
  2. Funksiyaların digər funksiyalardan qaytarılması.

5.2 Funksiyaların arqument kimi ötürülməsi

Daxili array metodlarından istifadə

JavaScript array-larla işləmək üçün bir çox daxili metodlar təqdim edir, bunlar yüksək səviyyəli funksiyalardır, məsələn, forEach(), map(), filter(), reduce() və başqaları.

1. forEach() metodu

forEach() metodu müəyyən edilmiş funksiyanı arrayin hər bir elementi üçün bir dəfə icra edir.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];

      numbers.forEach(function(number) {
        console.log(number);
      });
      // Çıxış: 1 2 3 4 5
    
  

2. map() metodu

map() metodu hər bir array elementinə tətbiq olunan müəyyən funksiyanın nəticələrindən ibarət yeni array yaradır.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];
      const squaredNumbers = numbers.map(function(number) {
        return number * number;
      });

      console.log(squaredNumbers);
      // Çıxış: [1, 4, 9, 16, 25]
    
  

3. filter() metodu

filter() metodu ötürülən funksiyada müəyyən edilmiş şərti keçən bütün elementlərlə yeni array yaradır.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];
      const evenNumbers = numbers.filter(function(number) {
        return number % 2 === 0;
      });

      console.log(evenNumbers);
      // Çıxış: [2, 4]
    
  

4. reduce() metodu

reduce() metodu accumulator və arrayin hər bir elementi ilə funksiyanı tətbiq edir (soldan sağa), və bu dəyərləri bir yeganə dəyərə endirir.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];
      const sum = numbers.reduce(function(total, number) {
        return total + number;
      }, 0);

      console.log(sum);
      // Çıxış: 15
    
  

5.3 Digər funksiyaları qaytaran funksiyalar

Yüksək səviyyəli funksiyalar başqa funksiyaları qaytara bilər, bu da daha çevik və konfiqurasiya edilə bilən funksiyalar yaratmağa imkan verir.

1. Currying (Karrinq)

Karrinq — bir neçə arqument qəbul edən funksiyanı, bir arqument qəbul edən və növbəti arqumenti qəbul edən yeni bir funksiya qaytaran formaya çevirmə prosesidir.

Karrinq nümunəsi:

JavaScript
    
      function multiply(a) {
        return function(b) {
          return a * b;
        };
      }

      const multiplyByTwo = multiply(2);
      console.log(multiplyByTwo(5)); // Nəticə: 10

      const multiplyByThree = multiply(3);
      console.log(multiplyByThree(5)); // Nəticə: 15
    
  

2. Konfiqurasiya edilə bilən funksiyaların yaradılması

Yüksək səviyyəli funksiyalar arqumentlər vasitəsilə tənzimlənə bilən funksiyalar yaratmağa imkan verir.

Nümunə:

JavaScript
    
      function createGreeting(greeting) {
        return function(name) {
          console.log(`${greeting}, ${name}!`);
        };
      }

      const sayHello = createGreeting('Salam');
      sayHello('Alice'); // Nəticə: Salam, Alice!

      const sayHi = createGreeting('Salam');
      sayHi('Bob'); // Nəticə: Salam, Bob!
    
  

5.4 Praktiki tətbiq

Yüksək səviyyəli funksiyaların praktiki tətbiqinə baxaq.

compose() funksiyası

compose() funksiyası bir neçə funksiyanı birləşdirərək, onları ardıcıllıqla icra edən tək bir funksiya yaradır:

JavaScript
    
      function compose(...functions) {
        return function(initialValue) {
          return functions.reduceRight((value, func) => func(value), initialValue);
        };
      }

      const addOne = x => x + 1;
      const double = x => x * 2;
      const addOneAndDouble = compose(double, addOne);
      console.log(addOneAndDouble(5)); // Çap edəcək: 12 (əvvəlcə 5-ə 1 əlavə edir, sonra nəticəni ikiqat artırır)
    
  

Asinxron yüksək səviyyəli funksiyalar

Asinxron yüksək səviyyəli funksiyalar API sorğuları və ya timerlərlə iş kimi asinxron əməliyyatlarla işləməyə imkan verir:

JavaScript
    
      function fetchData(callback) {
        setTimeout(() => {
          callback('Məlumat əldə edildi');
        }, 1000);
      }

      function processData(data) {
        console.log(data);
      }

      fetchData(processData);
      // Çap edəcək: Məlumat əldə edildi (1 saniyə sonra)
    
  
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION