Loogilise muutuja loendur JavaScriptis
Vaatleme järgmist koodi:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // väljastab 1
test()(); // väljastab 1
Miks alati kuvatakse number 1? Selleks,
et seda mõista, kirjutame oma koodi
teistmoodi ümber:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! esimene funktsioon
func1(); //väljastab 1
let func2 = test(); //!! teine funktsioon
func2(); //väljastab 1
See tähendab, et iga funktsiooni test
käivitamine sellisel viisil: test()(), loob oma
funktsiooni koos oma sulgemisega ja kutsub selle
funktsiooni kohe välja.
Määrake, ilma koodi käivitamata, mis konsoli väljastatakse:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Määrake, ilma koodi käivitamata, mis konsoli väljastatakse:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();