# Функция, возвращающая функцию в JavaScript

Пусть у нас есть вот такая функция, возвращающая строку:

`function func() { return '!'; } let result = func(); console.log(result); // выведет '!'`

Давайте теперь вместо строки, по аналогии, вернем анонимную функцию:

`function func() { return function() { return '!'; }; } let result = func(); // в переменной result будет функция console.log(result); // выведет 'function() {return '!';}'`

Как вы видите, переменная `result` теперь представляет собой функцию. Давайте выведем в консоль результат ее работы. Для этого напишем ей круглые скобки:

`function func() { return function() { return '!'; }; } let result = func(); console.log( result() ); // выведет '!'`

Так как вызов `func()` возвращает функцию, то мы можем сразу же и вызвать эту возвращаемую функцию, вот так: `func()()` - первые круглые скобки получают результат функции `func` (который сам является функцией), а вторые круглые скобки применяются к результату `func`.

Давайте попробуем:

`function func() { return function() { return '!'; }; } console.log( func()() ); // выведет '!'`

Сделайте функцию `func1`, которая будучи вызвана вот так: `func1()()`, вернет число `1`. Сделайте аналогичную функцию `func2`, возвращающую число `2`. Найдите сумму результатов этих функций.

←→
↑
en ru