Функцыя, якая вяртае функцыю ў 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.
Знайдзіце суму вынікаў гэтых функцый.