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

96
Vistas
Arrow function capture strategies for let declared variables

I've been reading Jon Skeet's article on closure capturing strategies and want to explore what's the case with JavaScript.

arr = [];
for(let i = 0; i < 3; i++) {
    arr.push(() => console.log(i));
}
arr.forEach(ele => ele());



arr = [];
let j;
for(j = 0; j < 3; j++) {
    arr.push(() => console.log(j));
}
arr.forEach(ele => ele());

Surprisingly, the first prints 0,1,2 and the second 3,3,3.

I also found that JS always captures variables. So why the first case?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

arr = [];
for(let i = 0; i < 3; i++) {
    arr.push(() => console.log('1', i));
}
arr.forEach(ele => ele());



arr = [];
let k;
for(k = 0; k < 3; k++) {
    arr.push(() => console.log('2', k));
}
arr.forEach(ele => ele());

I've added the strings 1 and 2 inside the console.logs so that you can better see which one is actually going first.

The first to end is 1 and it works as expected because the let keyword is scoped to the for loop. On the other hand, console.log in the second loop takes k which is scoped in the window scope, thus when console.log runs, the value of k is going to be set to that of the end of the for loop, while the value of i is only valid and scoped (thus the closure) inside the first for loop.

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