Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
With setTimeOut, why it console 4, 5 times ? javascript

If I run this code then it console 4 at 5 time, can anyone explain why it is happening ?

let number = 1;

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

Also if I modify this to as below then output is 5 times 5 ?

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

And why it prints 0 to 4 when we use let like

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

0

Its a typical use case of var being functional scope ,every iteration of for loop shares the same value of var (doesn't creates a new scope as var being functional scope) which is kind of global in here

so when the last condition arrives i<5 i is already has become 4 ,and it is shared by every callback of setTimeout so they all prints 4 ,4 times

But in case of let a new scope is formed in every iteration ,as let being a block scope (for loop has a block scope)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda