A deklaráció egy megnevezett függvénykijelentés; a kifejezés egy függvényt rendel hozzá egy változóhoz. A gyakorlati különbség a hoisting.
js
();
() { ; }
();
expressed = () { ; };
A deklaráció egy megnevezett függvénykijelentés; a kifejezés egy függvényt rendel hozzá egy változóhoz. A gyakorlati különbség a hoisting.
();
() { ; }
();
expressed = () { ; };
A függvény deklarációkat a testükkel együtt emelik fel, így a teljes függvény létezik, mielőtt a végrehajtás eléri. A függvény kifejezés csupán egy érték, amely egy változóhoz van rendelve — a korai hívás pontján a expressed még mindig undefined (var esetén) vagy a TDZ-ben van (let/const esetén).
// 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) { ... }
A deklarációk jól olvashatók a legfelső szintű megnevezett függvényekhez, és kihasználják a hoistinget (megadhatja őket a használatuk után). A kifejezések szükségesek nyíl funkciókhoz, visszahívásokhoz, IIFE-khez és függvények feltételes hozzárendeléséhez. A nyíl függvények mindig kifejezések.