Ֆունկցիա, որը վերադարձնում է ֆունկցիա 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 թիվը:
Գտեք այդ ֆունկցիաների արդյունքների գումարը: