Las funciones son valores de primera clase
Aquí JavaScript te da un poder que sorprende a quien viene de otros lenguajes: las funciones son valores como cualquier otro. Puedes guardarlas en variables, meterlas en arrays, pasarlas como argumento y devolverlas desde otra función, igual que harías con un número o un texto. Esto se llama "funciones de primera clase".
Pasar una función como argumento
Una función que recibe otra función se llama función de orden superior:
function aplicar(valor, operacion) {
return operacion(valor);
}
const doble = n => n * 2;
console.log(aplicar(5, doble)); // 10
Devolver una función
function multiplicador(factor) {
return n => n * factor;
}
const porTres = multiplicador(3);
console.log(porTres(10)); // 30
Esta idea, sencilla en apariencia, es la base de los patrones más potentes de JavaScript. Cuando una función "recuerda" valores de donde nació, tienes un closure: lo desbloquearás en el siguiente módulo, y es donde las funciones pasan de herramienta a verdadero superpoder.
Ejemplos
Guardar funciones en un objeto y llamarlas
const operaciones = {
sumar: (a, b) => a + b,
restar: (a, b) => a - b,
};
console.log(operaciones.sumar(2, 3)); // 5
console.log(operaciones.restar(7, 4)); // 3