Deklaracja to nazwana instrukcja funkcji; wyrażenie przypisuje funkcję do zmiennej. Praktyczna różnica to hoisting.
js
();
() { ; }
();
expressed = () { ; };
Deklaracja to nazwana instrukcja funkcji; wyrażenie przypisuje funkcję do zmiennej. Praktyczna różnica to hoisting.
();
() { ; }
();
expressed = () { ; };
Deklaracje funkcji są hoistowane razem z ich ciałem, więc cała funkcja istnieje zanim wykonanie do niej dojdzie. Wyrażenie funkcji to tylko wartość przypisana do zmiennej — w momencie wczesnego wywołania, expressed jest wciąż undefined (w przypadku var) lub w TDZ (w przypadku let/const).
// expression — for callbacks, conditional definitions, arrow functions
const handler = () => doThing();
const fn = condition ? a : b;
arr.map(x => x * 2);
// declaration — clear, hoisted top-level functions
function calculateTotal(items) { ... }
Deklaracje czytają się dobrze dla funkcji nazwanych na najwyższym poziomie i korzystają z hoistingu (możesz je zdefiniować po ich użyciu). Wyrażenia są niezbędne dla funkcji strzałek, callbacków, IIFE i warunkowego przypisywania funkcji. Funkcje strzałek są zawsze wyrażeniami.