Një numërues me mbyllje në JavaScript
Le ta rishkruajmë kodin që kemi shqyrtuar
në mënyrë që funksioni i kthyer çdo herë
të rrisë vlerën e variablit num
për një:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // shtojmë një
}
}
let func = test();
Kështu, çdo thirrje e funksionit func
do të shfaqë në konsolë një vlerë të re:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //do të shfaqë 1
func(); //do të shfaqë 2
func(); //do të shfaqë 3
func(); //do të shfaqë 4
func(); //do të shfaqë 5
Kështu, ne kemi implementuar një numërues të thirrjeve
të funksioneve, duke përdorur mbyllje (më saktë duke përdorur
variablin num nga mbyllja e funksionit tonë).
Kini parasysh se çdo thirrje e funksionit test
do të kthejë një funksion të ri, i cili
do të ketë mbylljen e vet. Kjo do të thotë se numërues të ndryshëm
do të punojnë në mënyrë të pavarur:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // numëruesi i parë
func1(); //do të shfaqë 1
func1(); //do të shfaqë 2
let func2 = test(); // numëruesi i dytë
func2(); //do të shfaqë 1
func2(); //do të shfaqë 2
Kështu, e njëjta variabël num
për funksione të ndryshëm do të ketë vlera të ndryshme!
Kjo do të thotë se nëse e thirrim funksionin test
dy herë, atëherë funksionet e marra prej tij do të
punojnë në mënyrë të pavarur dhe secili prej
këtyre funksioneve do të ketë variablin e saj të pavarur
num.
Vetë, pa parë në kodin tim, implementoni një numërues të thirrjeve të funksionit, që punon me mbyllje.
Le të ruajë funksioni në mbyllje numrin 10.
Bëni që çdo thirrje e funksionit
të zvogëlojë këtë numër për 1 dhe të shfaqë
në konsolë numrin e zvogëluar.
Modifikoni detyrën e mëparshme në mënyrë që
numërimi të arrijë 0, dhe pastaj çdo
thirrje pasuese e funksionit të shfaqë në konsolë
mesazhin se numërimi ka përfunduar.