Funksjon som returnerer en funksjon i JavaScript

La oss si at vi har en funksjon som returnerer en streng slik:

javascriptfunction func() {
  return '!';
}

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

La oss nå, analogt, returnere en anonym funksjon i stedet for en streng:

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

let result = func(); // variabelen result vil inneholde en funksjon
console.log(result); // vil skrive ut 'function() {return '!';}'

Som du ser, er variabelen result nå en funksjon. La oss skrive ut resultatet av dens kjøring til konsollen. For å gjøre dette skriver vi parenteser etter den:

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

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

Siden kallet func() returnerer en funksjon, kan vi umiddelbart kalle denne returnerte funksjonen, slik: func()() - de første parentesene henter resultatet av funksjonen func (som selv er en funksjon), og de andre parentesene brukes på resultatet av func.

La oss prøve:

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

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

Lag en funksjon func1 som, når den kalles slik: func1()(), returnerer tallet 1. Lag en tilsvarende funksjon func2 som returnerer tallet 2. Finn summen av resultatene fra disse funksjonene.