JavaScript'te Fonksiyon Döndüren Fonksiyon
Diyelim ki bize bir dize döndüren şöyle bir fonksiyonumuz var:
function func() {
return '!';
}
let result = func();
console.log(result); // '!' yazacak
Şimdi, benzer şekilde, bir dize yerine anonim bir fonksiyon döndürelim:
function func() {
return function() {
return '!';
};
}
let result = func(); // result değişkeni bir fonksiyon olacak
console.log(result); // 'function() {return '!';}' yazacak
Gördüğünüz gibi, result değişkeni
artık bir fonksiyonu temsil ediyor. Şimdi onun
çalıştırılmasının sonucunu konsola yazdıralım.
Bunun için parantezler kullanalım:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // '!' yazacak
func() çağrısı bir fonksiyon döndürdüğü için,
bu döndürülen fonksiyonu hemen şu şekilde
çağırabiliriz: func()() - ilk parantezler
func fonksiyonunun sonucunu (kendisi de bir fonksiyon olan)
alır, ikinci parantezler ise func'ın
sonucuna uygulanır.
Deneyelim:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // '!' yazacak
Şu şekilde çağrıldığında: func1()(),
1 sayısını döndüren bir func1 fonksiyonu yapın.
Benzer şekilde, 2 sayısını döndüren bir
func2 fonksiyonu yapın.
Bu fonksiyonların sonuçlarının toplamını bulun.