Lokalna promenljiva brojača u JavaScript
Razmotrimo sledeći kod:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // ispisaće 1
test()(); // ispisaće 1
Zašto će uvek biti ispisivan broj 1? Da
bismo ovo razumeli, prepišimo naš kod
drugačije:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! prva funkcija
func1(); //ispisaće 1
let func2 = test(); //!! druga funkcija
func2(); //ispisaće 1
To jest, svaki poziv funkcije test
na ovaj način: test()(), kreira svoju
funkciju sa svojim zatvorenjem i odmah poziva
tu funkciju.
Odredite, ne pokretajući kod, šta će biti ispisano u konzolu:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Odredite, ne pokretajući kod, šta će biti ispisano u konzolu:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();