JavaScriptте функция кайтаруучу функция

Бизде мындай сап кайтаруучу функция болсун:

javascriptfunction func() {
  return '!';
}

let result = func();
console.log(result); // чыгарат '!'

Эми саптын ордуна, окшоштук менен, анонимдик функцияны кайтаралы:

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

let result = func(); // result өзгөрмөсүндө функция болот
console.log(result); // чыгарат 'function() {return '!';}'

Көрүнүп тургандай, result өзгөрмөсү эми функцияны түшүндүрөт. Анын иштешин консолго чыгаралы. Ал үчүн ага тегерек кашааларды жазабыз:

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

let result = func();
console.log( result() ); // чыгарат '!'

func() чакыруусу функцияны кайтаргандыктан, биз ошол кайтарылган функцияны дароо чакыра алабыз, мындайча: func()() - биринчи тегерек кашаалар func функциясынын натыйжасын алат (өзү функция болгон), ал эми экинчи тегерек кашаалар funcтын натыйжасына тиешелуу болот.

Келип көрөлү:

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

console.log( func()() ); // чыгарат '!'
Задание 1

func1 функциясын жасаңыз, мындайча чакырылганда: func1()(), кайтарсын 1 санын. Ошол сыяктуу эле func2 функциясын жасаңыз, кайтарылсын 2 санын. Бул функциялардын натыйжаларынын суммасын табыңыз.