JavaScriptda Funktsiya Qaytaruvchi Funktsiya
Faraz qilaylik, bizda matn qaytaruvchi quyidagi funktsiya mavjud:
function func() {
return '!';
}
let result = func();
console.log(result); // '!' ni chiqaradi
Keling, endi matn o'rniga, o'xshash tarzda, anonim funktsiyani qaytaraylik:
function func() {
return function() {
return '!';
};
}
let result = func(); // result o'zgaruvchisida funktsiya bo'ladi
console.log(result); // 'function() {return '!';}' ni chiqaradi
Ko'rib turganingizdek, result o'zgaruvchisi
endi funktsiyani ifodalaydi. Keling, uning
ishlash natijasini konsolga chiqaraylik. Buning
uchun unga qavslar qo'yamiz:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // '!' ni chiqaradi
func() chaqiruvi funktsiyani qaytargani
sababli, biz qaytarilgan funktsiyani darhol
chaqirishimiz mumkin, mana bu tarzda: func()() - birinchi
qavslar func funktsiyasining natijasini
oladi (o'zi funktsiya bo'lgan),
ikkinchi qavslar esa func natijasiga
qo'llaniladi.
Keling, sinab ko'raylik:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // '!' ni chiqaradi
func1 funktsiyasini yarating, u
shunday chaqirilganda: func1()(), 1
sonini qaytarsin. 2 sonini qaytaruvchi
o'xshash func2 funktsiyasini yarating.
Ushbu funktsiyalar natijalari yig'indisini toping.