O declarație este o instrucțiune de funcție numită; o expresie atribuie o funcție unei variabile. Diferența practică este hoisting.
js
();
() { ; }
();
expressed = () { ; };
O declarație este o instrucțiune de funcție numită; o expresie atribuie o funcție unei variabile. Diferența practică este hoisting.
();
() { ; }
();
expressed = () { ; };
Declarațiile de funcție sunt hoistate cu corpul lor, deci întreaga funcție există înainte ca execuția să o atingă. O expresie de funcție este doar o valoare atribuită unei variabile — în punctul apelului timpuriu, expressed este încă undefined (cu var) sau în TDZ (cu 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) { ... }
Declarațiile citesc bine pentru funcțiile numite de nivel superior și beneficiază de hoisting (puteți să le definiți după utilizarea lor). Expresiile sunt necesare pentru funcțiile arrow, callbacks, IIFE și atribuția condiționată a funcțiilor. Funcțiile arrow sunt întotdeauna expresii.