JavaScript Hoisting e Tipos de Funções
JavaScript Hoisting e Tipos de Funções
Existem duas maneiras de definir funções em JavaScript:
- Declarações de função (function declarations), também conhecidas como function "statements",
function add(a, b) {
return a + b;
}TypeScriptfunction add(a, b) {
return a + b;
}- Expressões de função
const add = function (a, b) {
return a + b;
};TypeScriptconst 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.
1 - Code execution
1.1 - Function declarations
1.2 - Function expressionsmarkdown1 - Code execution
1.1 - Function declarations
1.2 - Function expressionsHoisting
1 - Function declarations
2 - Code execution
2.1 - Function expressionsmarkdownHoisting
1 - Function declarations
2 - Code execution
2.1 - Function expressionsE é por isso que podemos usá-las antes de suas declarações.
add(1, 2);
//=> 3
function add(a, b) {
return a + b;
}
add(1, 2);
//=> 3TypeScriptadd(1, 2);
//=> 3
function add(a, b) {
return a + b;
}
add(1, 2);
//=> 3Expressõ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.
add(1, 2);
//=> TypeError: add is not a function
const add = function (a, b) {
return a + b;
};
add(1, 2);
//=> 3TypeScriptadd(1, 2);
//=> TypeError: add is not a function
const add = function (a, b) {
return a + b;
};
add(1, 2);
//=> 3Função Arrow
Outra diferença é que você não pode ter declarações de função arrow.
add(1, 2);
//=> TypeError: add is not a function
const add = (a, b) => a + b;
add(1, 2);
//=> 3TypeScriptadd(1, 2);
//=> TypeError: add is not a function
const add = (a, b) => a + b;
add(1, 2);
//=> 3Conclusã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.
Tenha um ótimo dia e vejo você em breve.