Las Higher-Order Functions son una característica fundamental de la programación funcional en JavaScript. Como lo vimos en clases anteriores estás funciones puras que pueden tomar otras funciones como argumentos y/o devolver funciones como resultados. Esto permite crear funciones más genéricas y reutilizables que pueden ser combinadas de diferentes maneras para crear funciones más complejas.
Una de las características principales de las Higher-Order Functions es su capacidad para manipular otras funciones de manera genérica. Por ejemplo, una función "map" es una Higher-Order Function que toma una función y un array como argumentos, y devuelve un nuevo array con los resultados de aplicar la función a cada elemento del array original.
const numbers =[1,2,3,4,5];const doubledNumbers = numbers.map(function(number){return number *2;});console.log(doubledNumbers);// Output: [2, 4, 6, 8, 10]console.log(numbers)// Output: [1, 2, 3, 4, 5] // El array original sigue intacto
Otra característica importante de las Higher-Order Functions es su capacidad para crear funciones más pequeñas y reutilizables. Por ejemplo, una función "filter" es una Higher-Order Function que toma una función y un array como argumentos, y devuelve un nuevo array con los elementos que cumplen con una determinada condición.
const numbers =[1,2,3,4,5];const evenNumbers = numbers.filter(function(number){return number %2===0;});console.log(evenNumbers);// Output: [2,4]
¿Qué son las Higher Order Functions en JavaScript?
Las Higher Order Functions (Funciones de orden superior o Ciudadanos de Primer Orden) son un concepto fundamental en la programación funcional en JavaScript. Una función de orden superior es aquella que puede tomar una o más funciones como argumentos y/o devolver una función como resultado.
Un ejemplo común de Higher Order Function en JavaScript es el método Array.prototype.map(), el cual recibe una función como argumento y devuelve un nuevo array con los resultados de aplicar la función a cada elemento del array original.
Otro ejemplo es el método Array.prototype.filter(), el cual recibe una función como argumento y devuelve un nuevo array con los elementos que cumplen la condición definida en la función.
Las Higher Order Functions permiten escribir código más modular y reusable, ya que separan la lógica del programa en funciones más pequeñas y específicas. Además, promueven el uso de funciones como valores de primera clase en JavaScript, lo cual permite realizar operaciones más avanzadas como la composición de funciones y la curificación.
27/89 Higher order functions
Son funciones que pueden tomar otras funciones como argumentos y/o devolver funciones como resultados, lo que permite crear funciones más genéricas y reutilizables. Además, estas funciones tienen la capacidad de manipular otras funciones de manera genérica y crear funciones más pequeñas y reutilizables.
const numbers =[1,2,3,4,5];const doubledNumbers = numbers.map(function(number){return number *2;});console.log(doubledNumbers);// Output: [2, 4, 6, 8, 10]console.log(numbers)// Output: [1, 2, 3, 4, 5] // El array original sigue intacto
En el primer ejemplo, se utiliza la función “map” como una higher-order function para aplicar una función de multiplicación a cada elemento de un array con los resultados.
const numbers =[1,2,3,4,5];const evenNumbers = numbers.filter(function(number){return number %2===0;});console.log(evenNumbers);// Output: [2,4]
En el segundo ejemplo, se utiliza la función filter como una Higher-Order function para filtrar los elementos de un array de números que cumplen con una determinada condición y devolver un nuevo array con los elementos filtrados.
**Higher order functions **
Sirven para crear funciones reutilizables que puedan ser combinadas para crear funciones más complejas.
También ayudan a crear funciones más pequeñas y reutilizables.
Ejemplo: map y filter.
Filter devuelve un array con los elementos que cumplen la condición.
map devuelve un array con los resultados después de aplicar la función a cada elemento del array original (map ayuda a que el array original quede intacto).
Es interesante que esta lectura sea continua a la otra ya que si se utilizan HOF con closure functions se pueden hacer cosas..."divertidas".