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

118
Views
Tener problemas para entender lo que está pasando en el código

Aquí hay un código que realmente tengo problemas para entender (JavaScript)

 function func(x) { var y = x + 2; z = 20; return function(y) { var z = y * 3; return function(z) { return x + y + z; }; }; } console.log(func(3)(4)("z"));

salida: 7z

Tengo mucha experiencia con Java (solo Java) y realmente tengo problemas para entender cómo funciona JavaScript. Intenté depurar e ir paso a paso sobre el código, pero todavía estoy muy confundido.

Una subpregunta que tengo es si y en la línea 2 es la misma y que en la línea de return function(y) .

¡Cualquier ayuda sería muy apreciada!

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Al buscar el valor de la variable, JS lo seleccionará desde el alcance más cercano hacia arriba.

En la línea 5, la y es la y del argumento y no del ámbito superior. Ese valor, aunque está encerrado (léase cierres), no se usa aquí.

Lo mismo, va para la z a continuación.

Al ejecutar la sentencia, return x + y + z; el alcance externo (que está sombreando la variable y ) se destruye. Entonces, los otros valores de cierre se usan ergo 3 y 4.

 function func(x) { var y = x + 2; z = 20; return function(y) { var z = y * 3; return function(z) { return x + y + z; }; }; } console.log(func(3)(4)("z"));

about 4 years ago · Juan Pablo Isaza Report

0

  1. Consígase un buen editor de código para JS ( vscode es excelente y gratuito)
  2. Vaya a una variable, presione F2 y asígnele un nombre más exclusivo.
  3. comprobar qué sucesos se ven afectados.
  4. "use strict" ! ¿Qué es el modo estricto?

Así es como se vería su código.

 "use strict"; function func(arg0) { var var1 = arg0 + 2; // undeclared/global variable z = 20; return function (arg2) { var var2 = arg2 * 3; return function (arg4) { return arg0 + arg2 + arg4; }; }; } console.log(func(3)(4)("z"));

Creo que esto deja más claro qué variable/parámetro es qué.

Y si ejecuta esto, obtendrá un error con respecto al uso de la variable no declarada z , porque el modo estricto no permite esto, mientras que el modo descuidado crearía/usaría una variable global.

Nota al margen: eche un vistazo a Typescript . Viniendo de un lenguaje tan estricto como Java, es posible que prefiera la capacidad de escribir su código.

about 4 years ago · Juan Pablo Isaza Report

0

Lo que entiendo es de esta llamada de función es

 fun(3)(4)("Z");

primera llamada

 x = 3; y = 5; z = 20;

segunda llamada

 y=4; z=60; x=3;

tercera llamada

 x=3; // from first function parameter y=4; // y value from second function parameter z="z" // third function parameter

En el volverá

3+4+"Z" = 7z

como cuerda

Todos los valores precalculados son inútiles

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!