Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

89
Vistas
JavaScript haciendo algo innecesariamente complicado

Veo bloques de código todo el tiempo donde la gente lo complica innecesariamente. ¿Cuál es la razón para esto?

Ejemplo:

 const greet = function (greeting) { return function (name) { console.log(`${greeting} ${name}`) } } const greeterHey = greet('Hey'); greeterHey('test')

en lugar de algo como esto

 const greet = function (greeting, name) { console.log(`${greeting} ${name}`) } const greeterHey = greet('Hey', 'test');

¿Que es todo esto? ¿Tiene algo que ver con el hecho de que cuando editas el bloque de código más tarde, es más fácil?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Probablemente sea un ejemplo de curry de funciones o función de orden superior, una técnica en el Paradigma de Programación Funcional. Curryinng es, en mi opinión, probablemente lo más importante en la programación funcional con Haskell, por ejemplo.

El ejemplo es probablemente solo para una demostración fácil, sin embargo, la técnica es bastante poderosa si se usa en las situaciones correctas.

Al convertir la función de parámetros múltiples en cadenas de funciones de un argumento, puede crear lo que llamé "función de nicho"

 const greet = function (greeting) { return function (name) { console.log(`${greeting}, ${name}`) } } // greetWithHello kinda retains the same logic as `greet`, but now has become more "niche" // because you can only greet with "Hello" const greetWithHello = greet("Hello"); //greetWithHello is a FUNCTION greetWithHello("Ben") // "Hello, Ben" greetWitHello("Bob") // "Hello, Bob" const greetWithBadaboom = greet("Badaboom")

Como puede imaginar, en lugar de seguir escribiendo greet("Hello", "Ben") y greet("Hello", "Bob") , ahora tiene una función greetWithHello más reutilizable.

Comparado esto con la versión sin curry

 const greet2(phrase, name) { console.log(`${phrase}, ${name}`) } const greetWithHello2 = (name) => { return greet2("Hello", name) } const greetWithBadaboom2 = (name) => { return greet2("Badaboom", name) }

Como puede ver, mucho menos componible y legible que la versión con curry, y esto es solo para 2 parámetros. Es por esto que los patrones de programación funcional pueden ser muy útiles cuando se trabaja con funciones.

Solo sé esto de la universidad y nunca lo usé, pero supongo que las bibliotecas con funciones de orden superior pueden utilizar esto

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto está relacionado con algo llamado "cierres" que, en resumen, permite crear funciones que devuelven funciones, y esas conservan los valores que proporcionaste, variables o constantes por igual.

En otros lenguajes, las variables o constantes creadas dentro del alcance/bloque de una función solo viven durante la ejecución de dicha función. En JavaScript, al usar esta sintaxis, se crea un "entorno léxico" y la función devuelta también puede acceder a valores fuera de su propio ámbito/entorno.

Como se indicó en las otras respuestas, es una característica muy útil cuando se usa correctamente en funciones de orden superior.

Hay algunos ejemplos y una explicación más clara en la página de MDN sobre cierres:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda