Llamamos funciones de primer orden a aquellas que:
- a) Reciben una función como parámetro
- b) Devuelven una función como resultado
En este módulo exploramos las repercusiones de utilizar este tipo de funciones y exploramos algunas de las posibilidades que nos habilitan.
- funciones de primer orden -> lectura muy recomendada
Empezando por las funciones que reciben otras funciones por parámetro, implementaremos múltiples métodos de utilidad que se apoyan en las funciones de primer orden.
repeat
retry
map
filter
reduce
Un concepto muy importante a la hora de entender cómo se comportan las funciones en Javascript son las clausuras. En esencia, la clausura es el scope en el momento de creación de una función. Esta define todas las variables a las que la función va a tener acceso desde cualquier lugar. La clausura no se altera aunque la función se importe desde otro módulo o se pase por parámetro.
Las clausuras se explican en detalle durante la presentación del módulo e introducimos algunos conceptos como variable libre y las diferentes versiones del operador de incremento (++
).
Expuestas las clausuras, el módulo explora las posibilidades que se desbloquean al poder implementar funciones que reciben una función y devuelven otra función. En definitiva, este mecanismo nos permite modificar el comportamiento de las funciones de entrada de varias formas:
- Cambiar la forma o el número de los parámetros que espera esa función
- Cambiar la frecuencia con la que se llama esa función.
- Controlar que la función solo se ejecute si se cumplen determinadas condiciones.
Implementaremos algunos ejemplos en este módulo como memoize
y partial
, pero veremos más ejemplos en el módulo de asincronía.
De nuevo, Lodash ofrece muchas funciones utiles de primer orden: