Sobes.tech
Junior — Middle

Czym różni się użycie funkcji strzałkowych od funkcji standardowych w JavaScript?

sobes.tech AI

Odpowiedź od AI

Funkcje strzałkowe w JavaScript różnią się od funkcji standardowych pod kilkoma kluczowymi względami:

  • Kontekst this: W funkcjach strzałkowych this jest dziedziczone leksykalnie z otaczającego kontekstu, czyli nie tworzy własnego kontekstu this. W zwykłych funkcjach this zależy od tego, jak funkcja została wywołana.

  • Brak arguments: Funkcje strzałkowe nie mają własnego obiektu arguments. Aby uzyskać dostęp do argumentów, należy użyć parametrów lub zmiennych zewnętrznych.

  • Nie można ich używać jako konstruktorów: Funkcji strzałkowych nie można wywołać z new, ponieważ nie mają one wewnętrznej metody [[Construct]].

  • Krótsza składnia: Funkcje strzałkowe są zazwyczaj krótsze i wygodniejsze do pisania krótkich funkcji.

Przykład:

const obj = {
  value: 10,
  regularFunc: function() {
    console.log(this.value); // 10
  },
  arrowFunc: () => {
    console.log(this.value); // niezdefiniowane lub wartość z kontekstu zewnętrznego
  }
};

obj.regularFunc(); // wyświetli 10
obj.arrowFunc();   // wyświetli undefined

W związku z tym wybór między funkcją strzałkową a zwykłą funkcją zależy od potrzeby zarządzania kontekstem i specyfiki użycia.