Variable local de contador en JavaScript
Consideremos el siguiente código:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // mostrará 1
test()(); // mostrará 1
¿Por qué siempre se mostrará el número 1? Para
entenderlo, reescribamos nuestro código
de otra manera:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! primera función
func1(); //mostrará 1
let func2 = test(); //!! segunda función
func2(); //mostrará 1
Es decir, cada llamada a la función test
de esta manera: test()(), crea su propia
función con su propio cierre e inmediatamente invoca
a esa función.
Determine, sin ejecutar el código, qué se mostrará en la consola:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Determine, sin ejecutar el código, qué se mostrará en la consola:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();