É uma forma de fazer também, explicitando o intuito da função. Porém tenha cuidado com o uso do this. Funções nomeadas e anônimas possuem um uso diferente do this.
A grosso modo, enquanto as funções nomeadas possuem o contexto léxico do this de onde foram chamadas, as funções anônimas possuem o de onde foram criadas.
Exemplo:
function fullName() {
console.log(this.firstName + " " + this.lastName);
}
this.firstName = "Neymar"
this.lastName = "Jr."
const anonymFullName = () => {
console.log(this.firstName + " " + this.lastName);
}
function sayPeopleName(fullNameFunc) {
this.firstName = "Alberto"
this.lastName = "Casagrande"
fullNameFunc();
}
sayPeopleName(fullName)
sayPeopleName(anonymFullName)
Saída:
Alberto Casagrande
Neymar Jr.
Perceba que a função fullName
quando é chamada em sayPeopleName
printa o nome "Alberto Casagrande", que é o nome no this de sayPeopleName
, onde ela foi chamada.
Já a função anonymFullName
printa o nome "Neymar Jr.", que é o nome no contexto this que ela foi criada.
Mesmo as funções nomeadas podem ser exportadas e passadas como callbacks da mesma forma. O seu exemplo é executável dessa forma também:
function nomeDaFuncao (...args) {
console.log(args)
//..... return bla bla bla
}
list.filter(nomeDaFuncao)
Eu entendo a eventloop e para onde o this encaminha, seja ele um metodo, função ou qualquer objeto de callback 😅
Eu particularmente contorno o uso de this, descoplando os elementos de uma class ppr exemplo.
Sua explicação a respeito de escopo foi muito boa, poderia também ter dito a reapeiro dos binds, como a própria prototype bind, call e apply. 😌
Tornam uma confusão na mente de quem esta iniciando agora, mas na real é bem simples o uso.
Oque mais vejo por ai são curry com bind mal formada e quebrando toda a estrutura por não entenderem o escopo 😅
Outro ponto da sua resposta, poderia ser dito sobre construtores e a própria prototype 🥰 a origem da sintex sugar "class".
Obrigado por complementar a resposta, senti que faltou export mais detalhes técnicos da minha parte 🥰