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

223
Views
Problemas para entender el uso de let en un contexto de bucle

Esto no es un problema de programación, es solo una pregunta sobre un tema con alcances en JavaScript que me gustaría entender mejor.

El siguiente código recorre una serie de elementos de clase y hace clic en ellos a intervalos aleatorios de entre 250 y 750 ms. Un código muy básico pero lo curioso (y lo más difícil de entender para mí es el uso de la declaración let para la variable i en el bucle for.

 var x2 = document.querySelectorAll(".someClass"); for (let i=0; i < 35; i++){ setTimeout(function(){ x2[i].click(); }, i*(Math.random()*(750-250) + 250)); }

Sin let , es decir, si hubiera usado var en lugar de let (y esto en la declaración del ciclo, fuera del ciclo o globalmente), el elemento x[2] no estaría definido. Si creo un nuevo alcance dentro del ciclo, este código no funcionará como se esperaba. En lugar de hacer clic en el elemento x2[i] con un retraso aleatorio 35 veces, primero esperaría el retraso aleatorio y luego haría clic en todos los elementos a la vez.

Pero, hasta donde yo sé, la declaración let solo significa que la variable i tendría un alcance limitado para el ciclo for . ¿Por qué usar var lo haría indefinido? Y, si envuelvo la llamada en otra función anónima para crear un alcance, lo cual es contrario a la intuición, el resultado sería un comportamiento completamente defectuoso. ¿Cómo es posible todo esto? ¿Es esa una bandera de diseño en JavaScript o es un hecho común en muchos otros lenguajes de programación?

¿Me estoy perdiendo algo?

about 4 years ago · Juan Pablo Isaza
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!