Lokal tellervariabel i JavaScript
La oss se på følgende kode:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // vil skrive ut 1
test()(); // vil skrive ut 1
Hvorfor vil det alltid skrives ut tallet 1? For
å forstå dette, la oss omskrive koden vår
på en annen måte:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! første funksjon
func1(); //skriver ut 1
let func2 = test(); //!! andre funksjon
func2(); //skriver ut 1
Det vil si at hvert kall til funksjonen test
på denne måten: test()(), oppretter sin egen
funksjon med sitt eget lukning og kjører umiddelbart
denne funksjonen.
Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();