En deklaration är ett namngivet funktionsuttalande; ett uttryck tilldelar en funktion till en variabel. Den praktiska skillnaden är hoisting.
js
();
() { ; }
();
expressed = () { ; };
En deklaration är ett namngivet funktionsuttalande; ett uttryck tilldelar en funktion till en variabel. Den praktiska skillnaden är hoisting.
();
() { ; }
();
expressed = () { ; };
Funktionsdeklarationer är hissade med sin kropp, så hela funktionen finns innan körningen når den. Ett funktionsuttryck är bara ett värde tilldelat en variabel — vid tidpunkten för det tidiga anropet är expressed fortfarande undefined (med var) eller i TDZ (med 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) { ... }
Deklarationer läses väl för funktioner på toppnivå och drar nytta av hoisting (du kan definiera dem efter deras användning). Uttryck är nödvändiga för pilbågsfunktioner, callbacks, IIFEs och villkorlig tilldelning av funktioner. Pilbågsfunktioner är alltid uttryck.