Função com nome, mas Expression Function em JavaScript
Vamos agora criar uma função que terá um nome, mas será uma Expression Function, porque participa de uma expressão:
+function func() {
console.log('!');
}
Curiosamente, não conseguiremos chamar
nossa função pelo nome func,
isso resultará em um erro:
+function func() {
console.log('!');
}
func(); //!! causará um erro
Para ser capaz de chamar nossa função, ela precisa ser atribuída a alguma variável:
let test = function func() {
console.log('!');
};
test(); // exibirá '!'
Mais uma vez: uma função que é uma expressão funcional não pode ser chamada pelo seu nome. Essa função só pode ser chamada usando a variável na qual a função foi armazenada.
No entanto, uma expressão funcional pode ter um nome, isso será sintaticamente correto. Veremos para que isso é útil nas próximas lições.
Vamos resumir: as funções são Function Declaration ou Function Expression não porque têm ou não têm um nome, mas porque participam ou não de expressões.
Como você viu acima, uma função sem nome pode ser interpretada como uma Function Declaration, e uma função com nome pode ser uma Function Expression.