Funkcija, kas atgriež funkciju JavaScript

Pieņemsim, ka mums ir šāda funkcija, kas atgriež virkni:

javascriptfunction func() {
  return '!';
}

let result = func();
console.log(result); // izvadīs '!'

Tagad, pēc analoģijas, atgriezīsim anonīmu funkciju virknes vietā:

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

let result = func(); // mainīgajā result būs funkcija
console.log(result); // izvadīs 'function() {return '!';}'

Kā redzat, mainīgais result tagad ir funkcija. Izvadīsim konsolē tās darbības rezultātu. Lai to izdarītu, mēs rakstām apaļās iekavas:

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

let result = func();
console.log( result() ); // izvadīs '!'

Tā kā izsaukums func() atgriež funkciju, tad mēs varam uzreiz izsaukt šo atgriezto funkciju, šādi: func()() - pirmās apaļās iekavas iegūst funkcijas func rezultātu (kurš pats par sevi ir funkcija), un otrajās apaļās iekavas tiek piemērotas rezultātam func.

Mēģināsim:

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

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

Izveidojiet funkciju func1, kuru izsaucot šādi: func1()(), atgriezīs skaitli 1. Izveidojiet līdzīgu funkciju func2, kas atgriež skaitli 2. Atrodiet šo funkciju rezultātu summu.