Higher-order functions
- Node.js kursu
- Başlangıç
- Ders 78/116
- 5 dk
Fonksiyon parametreli fonksiyonları öğrenirsin.
Higher-order functions
Bir higher-order function (yüksek dereceli fonksiyon), ya bir fonksiyonu parametre olarak alır ya da bir fonksiyon döndürür. Callback alan fonksiyonlar bu kategoriye girer; ama döndürenler de en az kadar önemlidir.
Örnek: function makeAdder(n) { return (m) => n + m; }. Bu fonksiyon bir sayı alır ve başka bir fonksiyon döndürür. Dönen fonksiyon çağrıldığında n'i hatırlar ve yeni parametre m ile toplar: const add5 = makeAdder(5); add5(3) sonuçu 8'dir.
Bu desene closure da denir; döndürülen fonksiyon, tanımlandığı ortamdaki değişkenleri hatırlar. Ayrıntısını ileri seviyede göreceksin.
Closure kısaca
Bir fonksiyon, tanımlandığı kapsamdaki değişkenleri 'hatırlar'. Bu özelliğe closure denir. Higher-order function'lar bu sayede dışarıdaki değeri döndürülen fonksiyona taşıyabilir.
Örnek: function makeMultiplier(factor) { return (x) => x * factor; }. Burada makeMultiplier(3) çağrısı factor'ü 3 olarak hatırlayan bir fonksiyon döndürür. Bu fonksiyon daha sonra x * 3 hesaplar.
Closure, her çağrıda ayrı bir ortam oluşturur. makeMultiplier(3) ve makeMultiplier(5) ayrı factor değerleri hatırlayan iki bağımsız fonksiyon üretir. Bu, higher-order function'ların esnekliğini sağlar.
Uygulama Çarpan fonksiyonu döndür
makeMultiplier(factor) fonksiyonunu tanımla. Gövdesi (x) => x * factor ok fonksiyonunu döndürsün. const triple = makeMultiplier(3) ile bir çarpan oluştur, sonra triple(7) çağrısının sonuçunu console.log ile yazdır.
Başlangıç kodu
// makeMultiplier fonksiyonunu tanımla, triple oluştur ve çağrı sonuçunu yazdırÖrnek çözüm
function makeMultiplier(factor) {
return (x) => x * factor;
}
const triple = makeMultiplier(3);
console.log(triple(7));Beklenen çıktı
21
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Closure ile topla
function makeAdder(n) {
return (m) => n ____ m;
}
function makeAdder(n) {
return (m) => n + m;
}
Açıklama: n + m ile dışarıdaki n ve parametre m toplanır.
2 Hangisi higher-order function?
- function add(a, b) { return a + b; }
- function make(fn) { return fn; } Doğru cevap
- const x = 5;
- const arr = [1, 2, 3];
Açıklama: make bir fonksiyon parametresi alır ve fonksiyon döndürür.
3 HOF parçalarını eşle
| Kavram | Anlamı |
|---|---|
makeAdder |
HOF adı |
n |
Dış parametre |
(m) => n + m |
Döndürülen fonksiyon |
add5(3) |
Sonuç 8 veren çağrı |