Olá pessoal! Hoje vou discutir um conceito muito famoso em programação (funções de primeira classe). Já existem muitos recursos sobre esse tópico, mas ainda há algo novo a ser extraído deste artigo, e reservei um tempo para simplificar as coisas para melhor compreensão.
De acordo com a Wikipedia, diz-se que uma linguagem de programação tem funções de primeira classe se tratar funções como cidadãos de primeira classe .
Isso significa que a linguagem suporta a passagem de funções como argumentos para outras funções, retornando-as como valores de diferentes funções, atribuindo-as a variáveis ou armazenando-as em estruturas de dados.
Em Javascript, as coisas funcionam assim porque uma função é apenas outro tipo de objeto. Se você é novo neste conceito, você acha que é muito estranho, especialmente se você vem de um background de programação diferente, mas por enquanto, concentre-se nisso. Como os objetos são valores, as funções também são, e o Javascript os trata como um. Isso abre uma nova maneira de escrever código mais flexível, pois podemos armazenar funções em uma variável ou adicionar propriedades.
Dividi os pontos principais em uma lista de marcadores para facilitar as coisas. Para entender melhor as funções de primeira classe, aqui estão alguns pontos para esclarecê-lo.
Uma coisa tornada possível com uma função de primeira classe é passar uma função como um argumento; podemos ver esse estilo de código em muitos códigos Javascript. Por exemplo, o método addEventListener, que recebe uma função de retorno de chamada Javascript como um argumento, por exemplo
button.addEventListener('click', function(){ console.log('hellloooo') })
No trecho de código anterior, observamos que addEventListener recebe dois argumentos, onde a segunda função é a função de retorno de chamada e seria chamada depois que o botão fosse clicado.
Podemos retornar funções de outra função em Javascript; muitos objetos em Javascript têm métodos, por exemplo, funções Array em javascript. Além disso, temos o método da função, por exemplo, os métodos call()
, bind()
, apply()
Javascript podem ser todos chamados nas funções Javascript.
function count(){ Let counter = 0; return function(){ counter++ } }
A função count retornou outra função onde atualizamos o contador.
Em Javascript, podemos armazenar uma função em uma variável ou mesmo em uma propriedade, como você faria para calcular a média dos valores de Javascript.
Const multiply = (a,b) => a * b
A função de seta Javascript acima é armazenada na variável de multiplicação, que pode ser chamada
multiplique (3,5) desta forma.
Um dos principais significados das funções de primeira classe é que elas nos possibilitam escrever funções de ordem superior.
Esta é uma função que recebe outra função como argumento ou uma função que retorna uma nova função. Isso só é possível por causa da função de primeira classe.
button.addEventListener('click', function(){ console.log('hellloooo') })
Aqui addEventListener()
é um exemplo de função de ordem superior porque recebe outra função como argumento. Muitas vezes, refere-se a uma função de retorno de chamada Javascript porque foi chamada após a execução do HOF. A principal diferença entre funções de ordem superior e funções de primeira classe é que uma função de primeira classe é um recurso que uma linguagem de programação possui ou não, significa simplesmente que todas as funções são valores.
Concluindo, é fundamental saber que não existe função de primeira na prática; é apenas um conceito. Existem, no entanto, funções de ordem superior na prática que são possíveis porque a linguagem suporta funções de primeira classe.