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.