Локална променлива на бројачот во JavaScript
Да го разгледаме следниот код:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // ќе испише 1
test()(); // ќе испише 1
Зошто секогаш ќе се испишува бројот 1? За
да го разбереме ова, ајде да го преработиме нашиот код
поинаку:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! прва функција
func1(); //ќе испише 1
let func2 = test(); //!! втора функција
func2(); //ќе испише 1
Односно, секој повик на функцијата test
на овој начин: test()(), креира своја
функција со свое затворање и веднаш ја повикува
таа функција.
Определи, без да го стартувате кодот, што ќе се испише во конзолата:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Определи, без да го стартувате кодот, што ќе се испише во конзолата:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();