Uma declaração é uma instrução de função nomeada; uma expressão atribui uma função a uma variável. A diferença prática é hoisting.
();
() { ; }
();
expressed = () { ; };
Uma declaração é uma instrução de função nomeada; uma expressão atribui uma função a uma variável. A diferença prática é hoisting.
();
() { ; }
();
expressed = () { ; };
Declarações de função são hoistadas com seu corpo, então a função inteira existe antes da execução chegar até ela. Uma expressão de função é apenas um valor atribuído a uma variável — no ponto da chamada inicial, expressed ainda é undefined (com var) ou está na TDZ (com 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ções leem bem para funções nomeadas de nível superior e se beneficiam de hoisting (você pode defini-las após seu uso). Expressões são necessárias para funções arrow, callbacks, IIFEs e atribuição condicional de funções. Funções arrow são sempre expressões.
Uma biblioteca de perguntas de entrevista de TI com respostas detalhadas — de Júnior a Sênior.
Doar