Funktion, der returnerer en funktion i JavaScript

Lad os sige, at vi har en funktion som denne, der returnerer en streng:

javascriptfunction func() {
  return '!';
}

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

Lad os nu, analogt hermed, returnere en anonym funktion i stedet for en streng:

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

let result = func(); // variablen result vil indeholde en funktion
console.log(result); // vil udskrive 'function() {return '!';}'

Som du kan se, er variablen result nu en funktion. Lad os udskrive resultatet af dens eksekvering til konsollen. For at gøre dette skal vi skrive parenteser efter den:

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

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

Da kaldet func() returnerer en funktion, kan vi umiddelbart kalde denne returnerede funktion, sådan her: func()() - de første parenteser henter resultatet af funktionen func (som selv er en funktion), og de anden parenteser anvendes på resultatet af func.

Lad os prøve:

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

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

Lav en funktion func1, sådan at når den kaldes sådan her: func1()(), returnerer den nummer 1. Lav en tilsvarende funktion func2, der returnerer nummer 2. Find summen af resultaterne af disse funktioner.