¡Hola a todos! Hoy voy a discutir un concepto muy famoso en programación (funciones de primera clase). Ya hay tantos recursos sobre este tema, pero todavía hay algo nuevo que aprender de este artículo, y me he tomado el tiempo para simplificar las cosas para una mejor comprensión.
Según Wikipedia, se dice que un lenguaje de programación tiene funciones de primera clase si trata las funciones como ciudadanos de primera clase .
Esto significa que el lenguaje admite pasar funciones como argumentos a otras funciones, devolviéndolas como valores de diferentes funciones, asignándolas a variables o almacenándolas en estructuras de datos.
En Javascript, las cosas funcionan de esta manera porque una función es solo otro tipo de objeto. Si eres nuevo en este concepto, sentirás que es bastante incómodo, especialmente si vienes de un entorno de programación diferente, pero por ahora, piensa en eso. Dado que los objetos son valores, las funciones también lo son, y Javascript los trata como uno solo. Esto abre una nueva forma de escribir código más flexible ya que podemos almacenar funciones en una variable o agregar propiedades.
He desglosado los puntos principales en una lista de viñetas para facilitar las cosas. Para comprender mejor las funciones de primera clase, aquí hay algunos puntos para aclararlo.
Una cosa que se hace posible con una función de primera clase es pasar una función como argumento; podemos ver este estilo de código en mucho código Javascript. Por ejemplo, el método addEventListener, que recibe una función de devolución de llamada de Javascript como argumento, por ejemplo
button.addEventListener('click', function(){ console.log('hellloooo') })
En el fragmento de código anterior, observamos que addEventListener recibe dos argumentos, donde la segunda función es la función de devolución de llamada y se llamaría después de hacer clic en el botón.
Podemos devolver funciones desde otra función en Javascript; muchos objetos en Javascript tienen métodos, por ejemplo, funciones de matriz en javascript. Además, tenemos el método de la función, por ejemplo, los métodos Javascript call()
, bind()
, apply()
se pueden llamar en las funciones Javascript.
function count(){ Let counter = 0; return function(){ counter++ } }
La función de conteo devolvió otra función donde actualizamos el contador.
En Javascript, podemos almacenar una función en una variable o incluso en una propiedad, como lo haría con los valores promedio de Javascript.
Const multiply = (a,b) => a * b
La función de flecha de Javascript anterior se almacena en la variable de multiplicación, que se puede llamar
multiplica(3,5) de esta manera.
Uno de los principales significados de las funciones de primera clase es que nos permiten escribir funciones de orden superior.
Esta es una función que recibe otra función como argumento o una función que devuelve una nueva función. Esto solo es posible debido a la función de primera clase.
button.addEventListener('click', function(){ console.log('hellloooo') })
Aquí addEventListener()
es un ejemplo de una función de orden superior porque recibe otra función como argumento. A menudo se refiere a una función de devolución de llamada de Javascript porque se ha llamado después de que se haya ejecutado HOF. La principal diferencia entre las funciones de orden superior y de primera clase es que una función de primera clase es una característica que un lenguaje de programación tiene o no tiene, simplemente significa que todas las funciones son valores.
En conclusión, es fundamental saber que no existe una función de primera clase en la práctica; es solo un concepto. Sin embargo, existen funciones de orden superior en la práctica que son posibles porque el lenguaje admite funciones de primera clase.