Funksioni që kthen një funksion në JavaScript

Le të themi se kemi një funksion si ky që kthen një varg:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction 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ë:

javascriptfunction func() {
  return function() {
    return '!';
  };
}

console.log( func()() ); // do të shfaqë '!'
Задание 1

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.