Funkcje czyste (pure functions) są fundamentalnym pojęciem w programowaniu funkcyjnym. Funkcja czysta to taka, która dla tych samych argumentów zawsze zwraca te same wyniki i nie wywołuje żadnych obserwowalnych efektów ubocznych, takich jak modyfikacja zmiennych globalnych czy operacje we/wy. W tej lekcji przyjrzymy się, jak można wykorzystać funkcje czyste w JavaScript, aby pisać bardziej przewidywalny i łatwiejszy do testowania kod.
Przykład użycia funkcji czystej w JavaScript
Załóżmy, że mamy zadanie obliczenia podatku VAT od danej kwoty. Funkcja czysta, która wykonuje to zadanie, będzie przyjmować kwotę netto i stawkę VAT jako argumenty, a następnie zwracać kwotę brutto.
// Funkcja czysta do obliczania kwoty brutto z podatkiem VAT
function calculateGross(net, taxRate) {
return net + (net * taxRate);
}
Przykład z HTML
Aby użyć naszej funkcji czystej w praktycznym przykładzie, stworzymy prosty formularz HTML, który pozwoli użytkownikowi wprowadzić kwotę netto i stawkę VAT, a następnie użyjemy naszej funkcji do wyświetlenia obliczonej kwoty brutto.
<!DOCTYPE html>
<html>
<head>
<title>Obliczanie kwoty brutto z podatkiem VAT</title>
</head>
<body>
<label for="netAmount">Kwota netto:</label>
<input type="number" id="netAmount" name="netAmount">
<label for="taxRate">Stawka VAT (w formie dziesiętnej):</label>
<input type="number" id="taxRate" name="taxRate" step="0.01">
<button onclick="displayGross()">Oblicz kwotę brutto</button>
<p id="result"></p>
<script>
// Funkcja wywoływana po kliknięciu przycisku
function displayGross() {
const net = parseFloat(document.getElementById('netAmount').value);
const taxRate = parseFloat(document.getElementById('taxRate').value);
const gross = calculateGross(net, taxRate);
document.getElementById('result').innerText = `Kwota brutto: ${gross}`;
}
</script>
</body>
</html>
Co sprawia, że funkcja jest “czysta”?
- Stałe wyniki: Dla tych samych argumentów funkcja zawsze zwraca te same wyniki.
- Brak efektów ubocznych: Funkcja nie zmienia żadnych stanów ani nie wykonuje operacji na zewnątrz swojego zakresu.
Zalety używania funkcji czystych
- Testowalność: Funkcje czyste są łatwiejsze do testowania, ponieważ ich wyniki zależą wyłącznie od argumentów.
- Przewidywalność: Kod staje się bardziej przewidywalny, co ułatwia debugowanie i utrzymanie.
Podsumowanie
Funkcje czyste w JavaScript oferują potężne narzędzie do pisania kodu, który jest nie tylko łatwiejszy do zrozumienia i testowania, ale także bardziej przewidywalny. Przyjmując zasady funkcji czystych, programiści mogą znacznie poprawić jakość swojego kodu, unikając typowych pułapek związanych z niezamierzonymi efektami ubocznymi i złożonymi zależnościami.