Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

93
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda