Contador con cierres en JavaScript
Reescribamos el código que hemos visto
para que la función devuelta incremente
el valor de la variable num
en uno cada vez:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // sumamos uno
}
}
let func = test();
Resulta que cada llamada a la función func
mostrará en la consola un nuevo valor:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //mostrará 1
func(); //mostrará 2
func(); //mostrará 3
func(); //mostrará 4
func(); //mostrará 5
Resulta que hemos implementado un contador de llamadas
a funciones, usando un cierre (más precisamente, usando
la variable num del cierre de nuestra función).
Tenga en cuenta que cada llamada a la función test
devolverá una nueva función, que
tendrá su propio cierre. Es decir, diferentes contadores
funcionarán de forma independiente:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // primer contador
func1(); //mostrará 1
func1(); //mostrará 2
let func2 = test(); // segundo contador
func2(); //mostrará 1
func2(); //mostrará 2
¡Resulta que la misma variable num
tendrá valores diferentes para diferentes funciones!
Es decir, si llamamos a la función test
dos veces, entonces las funciones obtenidas de ella
funcionarán de forma independiente y cada una de
estas funciones tendrá su propia variable
independiente num.
Por su cuenta, sin mirar mi código, implemente un contador de llamadas a funciones que funcione con cierres.
Que la función en el cierre almacene el número 10.
Haga que cada llamada a la función
reduzca este número en 1 y muestre
en la consola el número reducido.
Modifique la tarea anterior para que
la cuenta regresiva llegue a 0, y luego cada
llamada posterior a la función muestre en la consola
un mensaje indicando que la cuenta regresiva ha terminado.