Deklaracija je nametnutu nizu funkcija; izraz dodjeljuje funkciju varijabli. Praktična razlika je hoisting.
js
();
() { ; }
();
expressed = () { ; };
Deklaracija je nametnutu nizu funkcija; izraz dodjeljuje funkciju varijabli. Praktična razlika je hoisting.
();
() { ; }
();
expressed = () { ; };
Deklaracije funkcija se podižu s njihovim tijelom, pa cijela funkcija postoji prije nego što izvršavanje do nje dođe. Izraz funkcije je samo vrijednost dodijeljena varijabli — u trenutku ranog poziva, expressed je još uvijek undefined (var) ili u TDZ (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 dobro čitaju za funkcije na vrhu razine i imaju koristi od hostinga (možete ih definirati nakon njihove upotrebe). Izrazi su potrebni za strelice, povratne pozive, IIFEs i uvjetnu dodjelu funkcija. Strelice su uvijek izrazi.