Функция, возвращающая функцию в 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.
Найдите сумму результатов этих функций.