Functie die een functie retourneert in JavaScript

Stel dat we een functie hebben die een string retourneert:

javascriptfunction func() {
  return '!';
}

let result = func();
console.log(result); // geeft '!' weer

Laten we nu, in analogie, in plaats van een string, een anonieme functie retourneren:

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

let result = func(); // in variabele result zit een functie
console.log(result); // geeft 'function() {return '!';}' weer

Zoals je ziet, is de variabele result nu een functie. Laten we het resultaat van de uitvoering ervan naar de console loggen. Schrijf er hiervoor ronde haakjes achter:

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

let result = func();
console.log( result() ); // geeft '!' weer

Omdat de aanroep func() een functie retourneert, kunnen we deze geretourneerde functie meteen aanroepen, zoals dit: func()() - de eerste ronde haakjes verkrijgen het resultaat van de functie func (dat zelf een functie is), en de tweede ronde haakjes worden toegepast op het resultaat van func.

Laten we het proberen:

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

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

Maak een functie func1, die wanneer zo aangeroepen: func1()(), het getal 1 retourneert. Maak een vergelijkbare functie func2, die het getal 2 retourneert. Bereken de som van de resultaten van deze functies.