Función que retorna una función en JavaScript

Supongamos que tenemos una función que retorna una cadena de texto:

javascriptfunction func() {
  return '!';
}

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

Ahora, por analogía, en lugar de una cadena, retornemos una función anónima:

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

let result = func(); // la variable result será una función
console.log(result); // mostrará 'function() {return '!';}'

Como puedes ver, la variable result ahora representa una función. Mostremos en la consola el resultado de su ejecución. Para ello, escribamos paréntesis después de ella:

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

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

Dado que la llamada func() retorna una función, podemos llamar inmediatamente a esta función retornada, de esta manera: func()() - los primeros paréntesis obtienen el resultado de la función func (que en sí mismo es una función), y los segundos paréntesis se aplican al resultado de func.

Intentémoslo:

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

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

Crea una función func1 que, al ser llamada así: func1()(), retorne el número 1. Crea una función similar func2, que retorne el número 2. Encuentra la suma de los resultados de estas funciones.