window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Programación funcional en JavaScript Parte 1 - Introducción - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2022-05-25
Desarrollo de software

Programación funcional en JavaScript Parte 1 - Introducción

The Codest

Pawel Ged

Vue.js Desarrollador

Lea nuestro artículo para descubrir la potencia de la programación funcional en JavaScript. La programación funcional se clasifica como un paradigma declarativo en el que la descripción del programa se separa de los cálculos.

¿Qué es la programación funcional?

"En términos sencillos, la programación funcional es una desarrollo de software estilo que hace hincapié en el uso de funciones".

Extractos del libro: Luis Atencio "Programación funcional en JavaScript. Cómo mejorar su JavaScript programas utilizando técnicas funcionales"

Programación funcional se clasifica como declarativo donde la descripción del programa se separa de los cálculos. Aquí se hace hincapié en el uso de expresiones para describir la lógica del programa. Esto es lo contrario de imperativo programación, donde el código se ejecuta paso a paso y le indica al ordenador con todo detalle cómo realizar el trabajo.

Declarativo vs imperativo, ejemplos

Consideremos un caso en el que tenemos una matriz de números enteros y necesitamos elevar cada uno de ellos a la segunda potencia y luego seleccionar sólo aquellos valores que no sean pares.

Imperativo

const números = [1, 2, 3, 4, 5, 6, 7, 8, 9];

const resultados = []

for(let i = 0; i < longitud.números; i++) {
const segundaPotencia = Math.pow(números[i], 2)
if(segundaPotencia & 1) { // o % 2 pero las operaciones en bits son más rápidas
results.push(segundaPotencia);
}
}

console.log(resultados) // [1, 9, 25, 49, 81]

En cuanto a la imperativo el enfoque en los detalles de implementación es claramente visible. En el bucle, se puede ver el índice del array basado en la necesidad de controlar el número de elementos. Debido a la gran cantidad de detalles en el código, es más difícil centrarse en lo que está haciendo. Centrémonos ahora en el declarativo solución.

Declarativo

const aumentaPotencia = (num) => Math.pow(num, 2)
const isOdd = (num) => num & 1;

const números = [1, 2, 3, 4, 5, 6, 7, 8, 9]

const resultados = números
.map(subeALaSegundaPotencia)
.filter(esPunto);

console.log(resultados) // [1, 9, 25, 49, 81]

En esta solución, se ha separado la implementación de la invocación llevando la lógica a funciones separadas. Gracias a esta solución, sólo podemos centrarnos en los nombres de las funciones que describen lo que ocurre en ellas. Además, el nivel de abstracción se ha elevado y la lógica ahora puede ser reutilizable. Ahora, centrémonos en la llamada. No puedes ver ningún detalle en ella, sólo una descripción que te dice lo que hace este código, paso a paso:

  1. map(subeALaSegundaPotencia) - toma cada elemento de una matriz y lo eleva a la segunda potencia,
  2. filter(isOdd) - filtrar y seleccionar los elementos impares.

Beneficios

Programación funcional tiene muchas ventajas. Cuando se trata de JavaScriptEl uso de funciones es natural porque se trata de un lenguaje funcional. Incluso las clases de este lenguaje son "azúcar sintáctico" y están compuestas por debajo de funciones.

En cuanto a la legibilidad, en el enfoque imperativo el código suele convertirse en una lista con nombres de funciones que pueden leerse secuencialmente sin profundizar en su lógica. Como resultado, no nos centramos en los detalles de implementación.

Otra ventaja es ceñirse a la convención de objetos inmutables. Gracias a este enfoque, el código se vuelve más seguro porque las referencias en JavaScript son muy fuertes y es fácil modificar el objeto no deseado.

En la programación funcional, el código se descompone en pequeñas funciones que pueden considerarse fácilmente código abstracto reutilizable.

Función pura

Una de las consideraciones importantes en la programación funcional son las funciones puras. Para crear una función de este tipo, es necesario recordar algunas reglas:

  • el resultado que devuelve la función depende únicamente de los parámetros de entrada,
  • no utilices variables globales ni variables que estén fuera de tu alcance,
  • no cambian el estado de los parámetros,
  • Las funciones puras no tienen "efectos secundarios" (normalmente modifican las propiedades de los objetos),
  • para los parámetros de entrada indicados, siempre devolverán un mismo resultado,
  • una función pura siempre toma un parámetro y siempre devuelve un parámetro.
// Función Inpure
let contador = 5
...
const multipleCounter = (multiplicador) => {
contador = contador * multiplicador
}

multiplyCounter(2) // -> ? el resultado depende del valor inicial
// Función pura
const multiplicarPor = (multiplicador) => (valor) => valor * multiplicador
const multiplicaPorDos = multiplicaPor(2)

const contador = multiplyByTwo(5) // -> 10

La primera función es impredecible porque depende de un parámetro externo que puede cambiar. La segunda función es transparente, sólo depende de parámetros de entrada, no los modifica y no utiliza variables fuera de rango. Es transparente porque depende de parámetros, no los modifica, no utiliza variables fuera de rango y devuelve un nuevo valor.

bandera de cooperación

Artículos relacionados

Desarrollo de software

Herramientas Javascript en acción

Descubre algunas herramientas de recuperación JavaScript para subir de nivel en tu juego de programación. Más información sobre ESLint, Prettier y Husky.

The Codest
Reda Salmi React Promotor

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish