Eine Deklaration ist eine benannte Funktionsanweisung; ein Ausdruck weist eine Funktion einer Variablen zu. Der praktische Unterschied ist das Hoisting.
();
() { ; }
();
expressed = () { ; };
Eine Deklaration ist eine benannte Funktionsanweisung; ein Ausdruck weist eine Funktion einer Variablen zu. Der praktische Unterschied ist das Hoisting.
();
() { ; }
();
expressed = () { ; };
Funktionsdeklarationen werden mit ihrem Body gehoistet, sodass die gesamte Funktion vorhanden ist, bevor die Ausführung sie erreicht. Ein Funktionsausdruck ist nur ein Wert, der einer Variablen zugewiesen wird – zum Zeitpunkt des frühen Aufrufs ist expressed immer noch undefined (mit var) oder in der TDZ (mit 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) { ... }
Deklarationen lesen sich gut für Top-Level-Funktionen mit Namen und profitieren vom Hoisting (Sie können sie nach ihrer Verwendung definieren). Ausdrücke sind notwendig für Pfeilfunktionen, Callbacks, IIFEs und das bedingte Zuweisen von Funktionen. Pfeilfunktionen sind immer Ausdrücke.