Kazi inayorudisha kazi katika JavaScript

Hebu tuwe na kazi kama hii inayorudisha mfuatano:

javascriptfunction func() {
  return '!';
}

let result = func();
console.log(result); // itatoa '!'

Sasa badala ya mfuatano, kwa mfano huo huo, turudishe kazi isiyojulikana:

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

let result = func(); // kwenye kibadilishaji result kutakuwa na kazi
console.log(result); // itatoa 'function() {return '!';}'

Kama unavyoona, kibadilishaji result sasa inawakilisha kazi. Hebu tuonyeshe kwenye console matokeo ya kazi yake. Ili kufanya hivyo andika mabano yake ya duara:

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

let result = func();
console.log( result() ); // itatoa '!'

Kwa kuwa wito func() unarudisha kazi, basi tunaweza mara moja kuita hiyo kazi iliyorudishwa, hivi: func()() - mabano ya kwanza ya duara hupata matokeo ya kazi func (ambayo yenyewe ni kazi), na mabano ya pili ya duara hutumika kwa matokeo ya func.

Hebu tujaribu:

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

console.log( func()() ); // itatoa '!'
Задание 1

Fanya kazi func1, ambayo ikiitwa hivi: func1()(), itarudisha nambari 1. Fanya kazi sawa func2, inayorudisha nambari 2. Tafuta jumla ya matokeo ya kazi hizi.