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

179
Views
Con setTimeOut, ¿por qué consola 4, 5 veces? javascript

Si ejecuto este código, entonces la consola 4 a las 5, ¿alguien puede explicar por qué sucede?

 let number = 1; for (var i=0; i<5; i++){ number=i; setTimeout(()=>{ console.log(number) },1000) }

Además, si modifico esto como se muestra a continuación, ¿la salida es 5 veces 5?

 for (var i=0; i<5; i++){ setTimeout(()=>{ console.log(i) },1000) }

¿Y por qué imprime de 0 a 4 cuando usamos let like?

 for (let i=0; i<5; i++){ setTimeout(()=>{ console.log(i) },1000) }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Es un caso de uso típico de var como ámbito funcional, cada iteración de for loop comparte el mismo valor de var (no crea un nuevo ámbito ya que var es un ámbito funcional) que es algo global aquí

así que cuando llega la última condición i<5 i ya se ha convertido en 4, y cada devolución de llamada de setTimeout lo comparte para que todos se impriman 4,4 veces

Pero en caso de que se forme un nuevo alcance en cada iteración, ya que es un alcance de bloque (for loop has a block scope)

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!