Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
¿Por qué no hay error de compilación para esta función de cierre?

Estoy leyendo el excelente libro de Marijn Haverbeke, "Eloquent JavaScript". https://eloquentjavascript.net/

No entiendo este ejemplo de cierres donde el number no está definido, pero no hay error.

¿Es number una función o un parámetro?

No hay nada que indique que el number se pasa como parámetro la segunda vez.

 function multiplier(factor) { return number => number * factor; } let twice = multiplier(2); console.log(twice(5)); // → 10
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Comprender cómo funcionan los cierres es bastante difícil, pero cuando el ejemplo que está viendo mezcla arbitrariamente una declaración de función con una función de flecha , como lo hace esta, si no comprende cómo funcionan las funciones de flecha, hace que sea más difícil de entender.

Aquí hay un ejemplo un poco más fácil que no usa una función de flecha para mostrar lo que está pasando.

 // `multipler` takes a factor as an argument function multiplier(factor) { // It returns a function that - when it's called - // accepts a number return function (number) { // And the return from that function // is the factor * number return number * factor; } } // So we call `multipler` with a factor and assign the // function it returns to our `twice` variable let twice = multiplier(2); // We can then call the function assigned // to `twice` with a number, and the resulting // return from that function will be factor * number console.log(twice(5));

En términos del ejemplo que usa esa función de flecha:

 // We pass in a factor to the `multipler` function multiplier(factor) { // We return a function that accepts a number // and returns factor * number // (I've added parentheses around the number // parameter to clearly show it) return (number) => number * factor; } // So we call `multipler` with a factor and assign the // function it returns to our `twice` variable let twice = multiplier(2); // We can then call the function assigned // to `twice` with a number, and the resulting // return from that function will be factor * number console.log(twice(5));

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!