JavaScript Hoisting e Tipos de Funções

JavaScript Hoisting e Tipos de Funções

Existem duas maneiras de definir funções em JavaScript:

  1. Declarações de função (function declarations), também conhecidas como function "statements",
TypeScript
function add(a, b) {
  return a + b;
}
  1. Expressões de função
TypeScript
const add = function (a, b) {
  return a + b;
};

Suas diferenças não estão apenas na sintaxe, mas também na ordem em que são carregadas.

Hoisting

As declarações de função são carregadas antes da execução do código, este processo é chamado hoisting.

markdown
1 - Code execution
1.1 - Function declarations
1.2 - Function expressions
markdown
Hoisting

1 - Function declarations
2 - Code execution
2.1 - Function expressions

E é por isso que podemos usá-las antes de suas declarações.

TypeScript
add(1, 2);
//=> 3

function add(a, b) {
  return a + b;
}

add(1, 2);
//=> 3

Expressões de função, por outro lado, são tratadas como um valor normal em JavaScript, assim como um number, string ou boolean, Você pode atribuí-las a uma variável, mas hoisting não se aplica, então, você só pode usá-las após suas declarações.

TypeScript
add(1, 2);
//=> TypeError: add is not a function

const add = function (a, b) {
  return a + b;
};

add(1, 2);
//=> 3

Função Arrow

Outra diferença é que você não pode ter declarações de função arrow.

TypeScript
add(1, 2);
//=> TypeError: add is not a function

const add = (a, b) => a + b;

add(1, 2);
//=> 3

Conclusão

As referências estão abaixo.

Se você gostou do conteúdo, você sabe o que fazer. Temos muitos outros vídeos sobre JavaScript e desenvolvimento web. Se inscreva se isso te interessar.

Tenha um ótimo dia e vejo você em breve.

Referências

  1. Function expressions na MDN
  2. Function declarations na MDN
  3. Arrow function expressions na MDN

Assine a nossa Newsletter e seja avisado quando eu lançar um curso, postar um vídeo ou escrever um artigo.

Campo obrigatório
Campo obrigatório