Czym jest programowanie funkcyjne w JavaScript?

Programowanie funkcyjne jest paradygmatem programowania, który traktuje obliczenia jako ewaluację funkcji matematycznych i unika zmieniania stanów oraz mutowalnych danych. W JavaScript, języku, który wspiera zarówno programowanie obiektowe, jak i funkcyjne, programowanie funkcyjne polega na stosowaniu funkcji jako obywateli pierwszej klasy, co oznacza, że mogą być przypisywane do zmiennych, przekazywane jako argumenty do innych funkcji i zwracane przez inne funkcje.

Kluczowe koncepcje programowania funkcyjnego

  1. Funkcje jako obywatele pierwszej klasy – Mogą być przypisywane do zmiennych i przekazywane jako argumenty.
  2. Czyste funkcje – Funkcje, które dla tych samych argumentów zawsze zwracają te same wyniki i nie mają efektów ubocznych (np., nie modyfikują zmiennych poza swoim zakresem).
  3. Niezmienność – Dane nie są zmieniane. Zamiast tego, tworzone są nowe kopie danych przy każdej zmianie.
  4. Funkcje wyższego rzędu – Funkcje, które mogą przyjmować inne funkcje jako argumenty lub zwracać je jako wynik.

Przykład kodu: Użycie funkcji wyższego rzędu w JavaScript

W poniższym przykładzie zobaczymy, jak wykorzystać funkcje wyższego rzędu, takie jak map, filter i reduce, do przetwarzania kolekcji danych.

<!DOCTYPE html>
<html>
<head>
    <title>Programowanie funkcyjne w JavaScript</title>
</head>
<body>
    <script>
        // Tablica obiektów reprezentujących osoby
        let people = [
            { name: "Anna", age: 22 },
            { name: "Jan", age: 35 },
            { name: "Ewa", age: 42 }
        ];

        // Użycie funkcji map do stworzenia nowej 
        // tablicy z wiekiem osób
        let ages = people.map(person => person.age);

        // Użycie funkcji filter do znalezienia osób 
        // w wieku powyżej 30 lat
        let peopleOver30 = people.filter(person => person.age > 30);

        // Użycie funkcji reduce do obliczenia średniej wieku osób
        let averageAge = ages.reduce((acc, age) 
                => acc + age, 0) / people.length;

        // Wyświetlenie wyników
        console.log("Wiek osób:", ages);
        console.log("Osoby powyżej 30 lat:", peopleOver30);
        console.log("Średni wiek:", averageAge);
    </script>
</body>
</html>

W tym przykładzie użyliśmy funkcji map do przekształcenia tablicy osób w tablicę wieku tych osób, filter do stworzenia nowej tablicy zawierającej tylko osoby starsze niż 30 lat, i reduce do obliczenia średniego wieku osób.

Podsumowanie

Programowanie funkcyjne w JavaScript oferuje potężne narzędzia do przetwarzania i manipulacji danymi w sposób, który jest zarówno wyrazisty, jak i zwięzły. Kluczowymi zaletami tego paradygmatu są łatwość testowania i debugowania kodu dzięki czystym funkcjom, a także mniejsza szansa na nieoczekiwane efekty uboczne w aplikacji. Poprzez korzystanie z funkcji wyższego rzędu, takich jak map, filter, i reduce, programiści mogą pisać kod, który jest nie tylko bardziej czytelny i ekspresywny, ale także bardziej zgodny z zasadami immutability i reusability.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top