Funkcje są sercem JavaScript. Gdy kiedyś były one związane z użyciem słowa kluczowego function, ES6 wprowadza nową i elegancką składnię, tzw. funkcje strzałkowe (Arrow-Funktionen). Ta nowa składnia sprawia, że twój kod nie tylko staje się krótszy, ale także rozwiązuje kilka problemów związanych z kontekstem this. W tym poradniku dowiesz się wszystkiego, co musisz wiedzieć o funkcjach strzałkowych.
Najważniejsze informacje
- Funkcje strzałkowe oferują krótszą składnię w porównaniu do standardowych funkcji.
- Nie posiadają własnego kontekstu this, co czyni je szczególnie przydatnymi do użycia w funkcjach zwrotnych (callback functions).
- Usunięcie nawiasów klamrowych i instrukcji return staje się możliwe, gdy funkcja zwraca tylko jedno wyrażenie.
Wprowadzenie do funkcji strzałkowych
Funkcje strzałkowe są zazwyczaj używane do uczynienia kodu bardziej czytelnym i zwięzłym. Zamiast pisać function, możesz użyć nowej składni, aby zadeklarować funkcję krócej.
Aby zrozumieć, czym są funkcje strzałkowe, można skorzystać z tradycyjnych funkcji jako punktu wyjścia. Gdy deklarujesz funkcję za pomocą słowa kluczowego function, jest ona zazwyczaj nieco dłuższa i mniej elegancka. Oto przykład standardowej funkcji w JavaScript:
To jest punkt wyjścia, z którego przechodzimy do funkcji strzałkowych.
Krok 1: Deklaracja funkcji strzałkowej
Zamiast słowa kluczowego function, wystarczy umieścić parametry w nawiasach, a następnie użyć strzałki, po której podajesz treść funkcji. Oto jak wygląda poprzednia funkcja jako funkcja strzałkowa:
Widzisz, że składnia jest znacznie bardziej zwięzła. Po pierwszej próbie możesz sprawdzić, czy funkcja działa poprawnie.
Krok 2: Użycie funkcji strzałkowych z tablicami
Kolejną dużą zaletą funkcji strzałkowych jest ich używanie z tablicami. Weźmy przykład. Załóżmy, że masz tablicę liczb i chcesz znaleźć pozycję określonej liczby. Tutaj używamy metody findIndex do znalezienia indeksu:
Funkcja strzałkowa znacząco ułatwia czytelność kodu i redukuje konieczność dodawania dodatkowego słowa kluczowego function.
Krok 3: Skracanie funkcji strzałkowych
Jeśli funkcja strzałkowa ma tylko jedno wyrażenie, możesz pominąć nawiasy klamrowe i słowo kluczowe return. To wygląda tak, gdy dalej skracamy funkcję findIndex:
To nie tylko krótsze, ale także bardziej eleganckie. Możesz przetestować funkcję i upewnić się, że nadal działa poprawnie.
Krok 4: Obsługa słowa kluczowego this
Bardzo istotną zaletą funkcji strzałkowych jest obsługa kontekstu this. W standardowych funkcjach this często zachowuje się nieprzewidywalnie, zwłaszcza gdy funkcja jest używana jako zwrotna. Funkcje strzałkowe natomiast wiążą this z kontekstem, w którym zostały zdefiniowane.
Oto przykład:
obj.print(); // Wyświetla "Text"
Jednakże, gdy użyjesz setTimeout z funkcją standardową, kontekst this zmienia się:
Użycie funkcji strzałkowej wewnątrz setTimeout daje ten sam wynik co funkcja standardowa, bez utraty kontekstu:
Krok 5: Zachowanie przypisania this
Możesz również przypisać this do zmiennej, aby mieć pewność, że masz do niego dostęp. Ten wzorzec jest jednak często mniej elegancki niż korzystanie z funkcji strzałkowych.
Zalety funkcji strzałkowych
- Są one krótsze i bardziej eleganckie w porównaniu do tradycyjnego deklarowania funkcji.
- Nie mają własnego kontekstu this, co upraszcza ich użycie w funkcjach zwrotnych (callback).
- Syntax pozwala znacznie poprawić czytelność kodu.
Podsumowanie
Funkcje strzałkowe oferują praktyczny sposób efektywnej deklaracji funkcji w JavaScript. Nowy składni nie tylko poprawia czytelność, ale także znacznie upraszcza obsługę kontekstu this. Powinieneś używać funkcji strzałkowych przede wszystkim w przypadku funkcji zwrotnych (callback) lub krótszych wyrażeń funkcji.
Najczęściej zadawane pytania
Czym są funkcje strzałkowe?Funkcje strzałkowe to skrócona składnia funkcji w języku JavaScript wprowadzone w ES6.
Kiedy powinienem używać funkcji strzałkowych?Używaj funkcji strzałkowych przede wszystkim w scenariuszach zwrotnych (callback) lub gdy potrzebne są funkcje anonimowe.
Jakie korzyści dają funkcje strzałkowe w kontekście this?Funkcje strzałkowe wiążą this z kontekstem otaczającym, co często zapobiega nieprzewidywalnemu zachowaniu normalnych funkcji.