Funzione che restituisce una funzione in JavaScript

Supponiamo di avere una funzione come questa, che restituisce una stringa:

javascriptfunction func() {
  return '!';
}

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

Ora, per analogia, invece di una stringa, restituiamo una funzione anonima:

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

let result = func(); // la variabile result conterrà una funzione
console.log(result); // visualizzerà 'function() {return '!';}'

Come puoi vedere, la variabile result ora è una funzione. Visualizziamo nella console il risultato della sua esecuzione. Per farlo, aggiungiamo le parentesi tonde:

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

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

Poiché la chiamata func() restituisce una funzione, possiamo chiamare immediatamente questa funzione restituita, in questo modo: func()() - le prime parentesi tonde ottengono il risultato della funzione func (che è essa stessa una funzione), e le seconde parentesi tonde vengono applicate al risultato di func.

Proviamo:

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

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

Crea una funzione func1 che, quando viene chiamata in questo modo: func1()(), restituisca il numero 1. Crea una funzione analoga func2, che restituisce il numero 2. Calcola la somma dei risultati di queste funzioni.