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()();