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

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

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

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

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 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