Sobes.tech
Junior

Jaka jest różnica między dwoma sposobami definiowania funkcji?

sobes.tech AI

Odpowiedź od AI

Główna różnica dotyczy kontekstu this.

Sposób definiowania funkcji Różnica
deklaracja funkcji Kontekst this jest określany przez to, jak funkcja jest wywoływana. Jest podnoszony przed wykonaniem kodu (hoisting).
funkcja strzałkowa Kontekst this dziedziczy z otaczającego (lexikalnego) kontekstu. Nie jest podnoszony (brak hoistingu).
// deklaracja funkcji
function funkcjaRegularna() {
  console.log(this); // `this` zależy od wywołania
}

// funkcja strzałkowa
const funkcjaStrzalkowa = () => {
  console.log(this); // `this` dziedziczy z kontekstu, w którym zdefiniowano funkcję
};

Funkcje strzałkowe nie mają też własnego obiektu arguments (jest on pobierany z zewnętrznego kontekstu) i nie mogą być używane jako konstruktory z operatorem new.