Funksioni që kthen një funksion në JavaScript
Le të themi se kemi një funksion si ky që kthen një varg:
function func() {
return '!';
}
let result = func();
console.log(result); // do të shfaqë '!'
Tani, në analogji, në vend të një vargu, le të kthejmë një funksion anonim:
function func() {
return function() {
return '!';
};
}
let result = func(); // në variablin result do të jetë një funksion
console.log(result); // do të shfaqë 'function() {return '!';}'
Siç e shihni, variabla result tani
paraqet një funksion. Le të shfaqim në konsol
rezultatin e ekzekutimit të saj. Për këtë, le t'i shkruajmë
kllapat e rrumbullakëta:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // do të shfaqë '!'
Meqenëse thirrja func() kthen një funksion,
ne mund ta thirrim menjëherë atë funksion të kthyer,
kështu: func()() - kllapat e para
rrumbullakëta marrin rezultatin e funksionit
func (i cili në vetvete është një funksion),
ndërsa kllapat e dyta të rrumbullakëta aplikohen në rezultatin
e func.
Le të provojmë:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // do të shfaqë '!'
Krijoni funksionin func1, i cili kur
thirret kështu: func1()(), kthen
numrin 1. Krijoni një funksion të ngjashëm
func2, që kthen numrin 2.
Gjeni shumën e rezultateve të këtyre funksioneve.