JavaScript: Programación funcional

Descubre los fundamentos y técnicas avanzadas de programación funcional en JavaScript con ejemplos prácticos y actualizados para 2024.

La programación funcional en JavaScript es un paradigma que se centra en el uso de funciones puras y la evitación de efectos secundarios. Este enfoque permite escribir código más predecible y fácil de testear. A continuación, exploraremos los conceptos fundamentales y técnicas avanzadas de programación funcional en JavaScript.

Funciones puras

Las funciones puras son aquellas que, dado el mismo conjunto de argumentos, siempre devuelven el mismo resultado y no tienen efectos secundarios. Esto significa que no modifican variables fuera de su alcance ni interactúan con el mundo exterior (como la manipulación del DOM o la realización de peticiones HTTP).

// Ejemplo de función pura
const suma = (a, b) => a + b;

console.log(suma(2, 3)); // Siempre devuelve 5

Inmutabilidad

La inmutabilidad es la propiedad que asegura que los datos no pueden ser modificados después de su creación. En lugar de alterar un objeto, se crea una nueva versión del mismo con los cambios necesarios.

// Uso de Object.assign para mantener la inmutabilidad
const persona = { nombre: 'Juan', edad: 30 };
const nuevaPersona = Object.assign({}, persona, { edad: 31 });

console.log(persona); // { nombre: 'Juan', edad: 30 }
console.log(nuevaPersona); // { nombre: 'Juan', edad: 31 }

Funciones de orden superior

Las funciones de orden superior son aquellas que pueden tomar otras funciones como argumentos o devolverlas como resultados. Este concepto es fundamental en la programación funcional.

// Ejemplo de función de orden superior
const aplicarOperacion = (operacion, a, b) => operacion(a, b);

const multiplicar = (x, y) => x * y;

console.log(aplicarOperacion(multiplicar, 4, 5)); // Devuelve 20

Composición de funciones

La composición de funciones es una técnica que permite combinar varias funciones simples para crear una función más compleja. En JavaScript, esto se puede lograr utilizando el método reduce.

// Ejemplo de composición de funciones
const sumar = (a) => a + 1;
const duplicar = (a) => a * 2;

const funciones = [sumar, duplicar];

const resultado = funciones.reduce((acc, fn) => fn(acc), 5);

console.log(resultado); // Devuelve 12: (5 + 1) * 2

Currificación

La currificación es el proceso de transformar una función que toma varios argumentos en una serie de funciones que toman un único argumento. Esto permite crear funciones más reutilizables.

// Ejemplo de currificación
const sumaCurried = (a) => (b) => a + b;

const sumaCinco = sumaCurried(5);

console.log(sumaCinco(3)); // Devuelve 8
console.log(sumaCinco(7)); // Devuelve 12

Uso de métodos funcionales de arrays

JavaScript proporciona varios métodos para trabajar con arrays de manera funcional, como map, filter y reduce.

const numeros = [1, 2, 3, 4, 5];

// Uso de map
const duplicados = numeros.map(n => n * 2);
console.log(duplicados); // [2, 4, 6, 8, 10]

// Uso de filter
const pares = numeros.filter(n => n % 2 === 0);
console.log(pares); // [2, 4]

// Uso de reduce
const sumaTotal = numeros.reduce((acc, n) => acc + n, 0);
console.log(sumaTotal); // 15
Certifícate en JavaScript con CertiDevs PLUS

Lecciones de este módulo de JavaScript

Lecciones de programación del módulo Programación funcional del curso de JavaScript.

Ejercicios de programación en este módulo de JavaScript

Evalúa tus conocimientos en Programación funcional con ejercicios de programación Programación funcional de tipo Test, Puzzle, Código y Proyecto con VSCode.