Deklaracija je poimenovana izjava funkcije; izraz dodeli funkcijo spremenljivki. Praktična razlika je hoisting.
js
();
() { ; }
();
expressed = () { ; };
Deklaracija je poimenovana izjava funkcije; izraz dodeli funkcijo spremenljivki. Praktična razlika je hoisting.
();
() { ; }
();
expressed = () { ; };
Deklaracije funkcij so dvignjene s svojim telesom, zato cela funkcija obstaja, preden se izvršitev do nje dotakne. Izraz funkcije je le vrednost, dodeljena spremenljivki — v točki zgodnjega klica je expressed še vedno undefined (z var) ali v TDZ (z 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) { ... }
Deklaracije se lepo berejo za funkcije na vrhu, poimenovane funkcije in se koriste od dviga (lahko jih definirate po njihovi uporabi). Izrazi so potrebni za funkcije puščice, povratne klice, IIFE in pogojno dodeljevanje funkcij. Funkcije puščice so vedno izrazi.