Las funciones de orden superior son un concepto fundamental en JavaScript, especialmente en la programación funcional. Una función se considera de orden superior si cumple con al menos una de estas condiciones:
Estas funciones son ampliamente utilizadas para manejar datos y procesos de manera eficiente y expresiva.
En JavaScript, las funciones son ciudadanos de primera clase (first-class citizens), lo que significa que pueden ser tratadas como cualquier otro valor: asignadas a variables, pasadas como argumentos, o devueltas por otras funciones. Esto permite la creación de funciones de orden superior.
function operar(num1, num2, operacion) {
return operacion(num1, num2);
}
const suma = (a, b) => a + b;
const resta = (a, b) => a - b;
console.log(operar(5, 3, suma)); // 8
console.log(operar(5, 3, resta)); // 2
En este ejemplo, la función operar
es de orden superior porque recibe una función (suma
o resta
) como argumento.
Muchos métodos de los arrays son funciones de orden superior porque aceptan funciones como argumentos.
map()
Crea un nuevo array aplicando una función a cada elemento del array original.
const numeros = [1, 2, 3, 4];
const cuadrados = numeros.map(num => num ** 2);
console.log(cuadrados); // [1, 4, 9, 16]
filter()
Crea un nuevo array con todos los elementos que cumplen una condición.
const edades = [18, 21, 16, 40];
const mayores = edades.filter(edad => edad >= 18);
console.log(mayores); // [18, 21, 40]
reduce()
Reduce el array a un único valor acumulando los resultados de una función.
const numeros = [1, 2, 3, 4];
const sumaTotal = numeros.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
console.log(sumaTotal); // 10
Otra capacidad de las funciones de orden superior es devolver nuevas funciones.
function crearSaludo(saludoInicial) {
return function(nombre) {
return `${saludoInicial}, ${nombre}!`;
};
}
const saludoEnEspanol = crearSaludo("Hola");
const saludoEnIngles = crearSaludo("Hello");
console.log(saludoEnEspanol("Juan")); // Hola, Juan!
console.log(saludoEnIngles("John")); // Hello, John!
En este caso, crearSaludo
devuelve una nueva función personalizada para un saludo específico.
La composición de funciones es una técnica que combina funciones pequeñas para construir funciones más complejas.
const agregar = x => x + 1;
const multiplicar = x => x * 2;
const combinarFunciones = (x) => multiplicar(agregar(x));
console.log(combinarFunciones(5)); // 12
Aquí, la salida de agregar
se utiliza como entrada para multiplicar
.
Las funciones de orden superior son comunes en el manejo de promesas y operaciones asíncronas.
then
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
En este caso, las funciones pasadas a then
y catch
son funciones de orden superior que procesan el resultado de las promesas.
Las funciones de orden superior son una herramienta poderosa que todo desarrollador de JavaScript debe dominar. Desde manipular datos en arrays hasta manejar procesos asíncronos, su utilidad es clave para escribir código limpio, eficiente y expresivo.