Funciones de orden superior: una poderosa herramienta en programación funcional

Si está aprendiendo JavaScript, es probable que se haya topado con el término funciones de orden superior. En términos simples, las funciones de orden superior son funciones que operan sobre otras funciones. Pueden tomar funciones como argumentos o devolverlas como salida.
La aceptación de funciones de orden superior de JavaScript lo hace ideal para la programación funcional. La programación funcional es un paradigma de programación en el que puede pasar funciones como parámetros a otras funciones y también devolverlas como valores. En la programación funcional, pensamos y codificamos en términos de funciones. JavaScript, Haskell, Clojure, Scala y Erlang son algunos de los lenguajes que implementan la programación funcional.
JavaScript trata las funciones como ciudadanos de primera clase. Esto se debe a que las funciones son objetos. Podemos agregar propiedades a las funciones como lo hacemos con los objetos. Por ejemplo:
function greeting() {
console.log('Hello World');
}
// We can add properties to functions like we do with objects
greeting.lang = 'English';
// Prints 'English'
console.log(greeting.lang);
Ahora que sabemos qué son las funciones de primera clase, profundicemos en las funciones de orden superior en JavaScript.
Algunos ejemplos de funciones integradas de orden superior incluyen A continuación se enumeran algunas de las muchas funciones integradas de orden superior:
- matriz.prototipo.mapa()
- matriz.prototipo.filtro()
- Array.prototype.reduce()
- Array.prototype.forEach()
- EventTarget.addEventListener()
1- Array.prototype.map(): esta función de orden superior crea una nueva matriz llamando a una función proporcionada en cada elemento de la matriz original. La función provista puede transformar cada elemento de alguna manera. Por ejemplo, si tiene una matriz de números y desea duplicar cada número, podría usar map
esto:
const originalArray = [1, 2, 3];
const doubledArray = originalArray.map(num => num * 2);
// doubledArray is now [2, 4, 6]
const originalArray = [1, 2, 3, 4, 5, 6];
const evenArray = originalArray.filter(num => num % 2 === 0);
// evenArray is now [2, 4, 6]
const originalArray = [1, 2, 3, 4, 5];
const sum = originalArray.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// sum is now 15
const names = ['Alice', 'Bob', 'Charlie'];
names.forEach(name => console.log(name));
// this will log "Alice", "Bob", and "Charlie" to the console
const button = document.getElementById('myButton');
button.addEventListener('click', () => alert('Button clicked!'));
// this will show an alert when the button is clicked
Hasta este punto, vimos varias funciones de orden superior integradas en el lenguaje. Ahora vamos a crear nuestra propia función de orden superior. En aras de la simplicidad, creemos una función de orden superior que tome una matriz de números y una función de devolución de llamada como argumentos, y devuelva una nueva matriz donde cada elemento es el resultado de aplicar la función de devolución de llamada al elemento correspondiente en la matriz original. .
function mapArray(arr, callback) {
const result = [];
for (let i = 0; i < arr.length; i++) {
result.push(callback(arr[i]));
}
return result;
}
Veamos un ejemplo de cómo podemos usar esta función de orden superior:
const numbers = [1, 2, 3, 4, 5];
function multiplyByTwo(num) {
return num * 2;
}
const doubledNumbers = mapArray(numbers, multiplyByTwo);
console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10]
¡Y eso es! Acabamos de crear nuestra propia función de orden superior en JavaScript. Las posibilidades de las funciones de orden superior son infinitas y dominarlas puede convertirnos en mejores programadores.
Conclusión
En resumen, hemos explorado el concepto de funciones de orden superior y las diversas funciones integradas de orden superior disponibles. Además, hemos aprendido a crear nuestras propias funciones de orden superior. Estas funciones tienen la capacidad única de recibir y devolver otras funciones como argumentos y salida, lo que las convierte en una herramienta poderosa en la programación. Si este artículo le resultó útil, considere aplaudir , seguirme en Medium y no dude en dejar un comentario si tiene alguna pregunta o inquietud. ¡Gracias por leer!