Funktio, joka palauttaa funktion JavaScriptissä

Oletetaan, että meillä on tällainen funktio, joka palauttaa merkkijonon:

javascriptfunction func() {
  return '!';
}

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

Palautetaan nyt merkkijonon sijasta, analogisesti, anonyymi funktio:

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

let result = func(); // muuttuja result sisältää funktion
console.log(result); // tulostaa 'function() {return '!';}'

Kuten näette, muuttuja result on nyt funktio. Tulostetaan konsoliin sen suorituksen tulos. Kirjoitetaan sitä varten pyöreät sulkeet:

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

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

Koska kutsuttaessa func() palautuu funktio, voimme heti kutsua myös tätä palautettua funktiota, näin: func()() - ensimmäiset pyöreät sulkeet saavat funktion func tuloksen (joka on itse funktio), ja toiset pyöreät sulkeet kohdistuvat tulokseen func.

Kokeillaan:

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

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

Tee funktio func1, joka kun kutsutaan näin: func1()(), palauttaa luvun 1. Tee vastaava funktio func2, joka palauttaa luvun 2. Löydä näiden funktioiden tulosten summa.