Deklarace je pojmenovaný příkaz funkce; výraz přiřadí funkci proměnné. Praktický rozdíl je hoisting.
js
();
() { ; }
();
expressed = () { ; };
Deklarace je pojmenovaný příkaz funkce; výraz přiřadí funkci proměnné. Praktický rozdíl je hoisting.
();
() { ; }
();
expressed = () { ; };
Deklarace funkcí jsou hostovány s jejich tělem, takže celá funkce existuje před tím, než se provádění dostane na toto místo. Výraz funkce je jen hodnota přiřazená proměnné — v místě raného volání je expressed stále undefined (s var) nebo v TDZ (s 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) { ... }
Deklarace se čtou dobře pro funkce na nejvyšší úrovni s názvem a těží z hoistingu (můžete je definovat po jejich použití). Výrazy jsou nezbytné pro arrow funkce, callback funkce, IIFEs a podmíněné přiřazování funkcí. Arrow funkce jsou vždy výrazy.