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 expressions
markdown1 - Code execution
1.1 - Function declarations
1.2 - Function expressions
Hoisting
1 - Function declarations
2 - Code execution
2.1 - Function expressions
markdownHoisting
1 - Function declarations
2 - Code execution
2.1 - Function expressions
E é 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);
//=> 3
TypeScriptadd(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.
add(1, 2);
//=> TypeError: add is not a function
const add = function (a, b) {
return a + b;
};
add(1, 2);
//=> 3
TypeScriptadd(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.
add(1, 2);
//=> TypeError: add is not a function
const add = (a, b) => a + b;
add(1, 2);
//=> 3
TypeScriptadd(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.
Tenha um ótimo dia e vejo você em breve.