Deklaracja/wyrażenie

W JS funkcje można tworzyć na dwa główne sposoby:

  • deklaracje funkcji
  • wyrażenia funkcji

Choć obie metody służą do definiowania funkcji, różnią się kilkoma kluczowymi aspektami, które mogą wpłynąć na sposób, w jaki piszesz i organizujesz swój kod.

Deklaracje funkcji

Deklaracja funkcji to standardowy sposób definiowania funkcji. Widzieliśmy to w poprzedniej lekcji.

function nazwaFunkcji(parametry) {
	// Ciało funkcji
}

Główne cechy:

  • Hoisting: Deklaracje funkcji są “wynoszone” na początek zakresu, w którym zostały zdefiniowane. Oznacza to, że możesz wywołać funkcję przed jej zadeklarowaniem w kodzie.
  • Czytelność i struktura: Deklaracje funkcji są zazwyczaj bardziej czytelne, zwłaszcza w dużych projektach, ponieważ łatwo jest zidentyfikować funkcje w kodzie.

Przykład:

const wynik = dodaj(5, 3); // Wywołanie funkcji przed jej zdefiniowaniem.
console.log(wynik); // Działa, zwraca 8

function dodaj(a, b) {
	return a + b;
}

Wyrażenia funkcji

Wyrażenie funkcji to inny sposób definiowania funkcji, który polega na przypisaniu funkcji do zmiennej. Wygląda to następująco:

const nazwaFunkcji = function (parametry) {
	// Ciało funkcji
};

Główne cechy:

  • Brak hoistingu: W przeciwieństwie do deklaracji, wyrażenia funkcji nie są “wynoszone”. Oznacza to, że nie można ich wywołać przed zdefiniowaniem w kodzie.
  • Anonimowość: Często funkcje w wyrażeniach są “anonimowe” (tak nazywamy funkcje bez podanej nazwy po słowie kluczowym function), co może utrudniać debugowanie, ale również daje elastyczność w definiowaniu funkcji.

Przykład:

const wynik = dodaj(5, 3); // ⛔ Błąd: "dodaj" nie jest zdefiniowane
console.log(wynik);

const dodaj = function (a, b) {
	return a + b;
};

Kiedy używać którego

  • Deklaracje funkcji są idealne, gdy potrzebujesz jasnej struktury i łatwości w identyfikowaniu funkcji w kodzie. Są one także użyteczne, gdy funkcje muszą być wywoływane w różnych miejscach kodu, niezależnie od ich kolejności.
  • Wyrażenia funkcji są użyteczne w sytuacjach, gdzie funkcje są używane jako wartości, np. jako argumenty innych funkcji, czy też gdy chcesz uniknąć hoistingu, co może prowadzić do bardziej przewidywalnego kodu.

Masz pytania lub uwagi?

discord icon Przejdź na Discord
Masz pytanie? Napisz do nas 👇
kontakt@frontstack.pl
Copyright © 2023 Frontstack