Variabile locale del contatore in JavaScript
Consideriamo il seguente codice:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // visualizzerà 1
test()(); // visualizzerà 1
Perché visualizzerà sempre il numero 1? Per
capirlo, riscriviamo il nostro codice
in modo diverso:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! prima funzione
func1(); //visualizzerà 1
let func2 = test(); //!! seconda funzione
func2(); //visualizzerà 1
Cioè ogni chiamata della funzione test
in questo modo: test()(), crea la propria
funzione con la propria chiusura e chiama immediatamente
questa funzione.
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Determinate, senza eseguire il codice, cosa verrà visualizzato in console:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();