Funkcija, kas atgriež funkciju JavaScript
Pieņemsim, ka mums ir šāda funkcija, kas atgriež virkni:
function func() {
return '!';
}
let result = func();
console.log(result); // izvadīs '!'
Tagad, pēc analoģijas, atgriezīsim anonīmu funkciju virknes vietā:
function func() {
return function() {
return '!';
};
}
let result = func(); // mainīgajā result būs funkcija
console.log(result); // izvadīs 'function() {return '!';}'
Kā redzat, mainīgais result tagad
ir funkcija. Izvadīsim konsolē
tās darbības rezultātu. Lai to izdarītu, mēs rakstām
apaļās iekavas:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // izvadīs '!'
Tā kā izsaukums func() atgriež funkciju,
tad mēs varam uzreiz izsaukt šo atgriezto
funkciju, šādi: func()() - pirmās
apaļās iekavas iegūst funkcijas
func rezultātu
(kurš pats par sevi ir funkcija),
un otrajās apaļās iekavas tiek piemērotas rezultātam
func.
Mēģināsim:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // izvadīs '!'
Izveidojiet funkciju func1, kuru izsaucot
šādi: func1()(), atgriezīs
skaitli 1. Izveidojiet līdzīgu funkciju
func2, kas atgriež skaitli 2.
Atrodiet šo funkciju rezultātu summu.