CodeBlanks Logo Icon CodeBlanks

Higher-order fonksiyonlar

Fonksiyonu argüman alan veya döndüren higher-order fonksiyonları öğrenirsin.

Higher-order fonksiyonlar

Bir higher-order fonksiyon, ya bir fonksiyonu parametre olarak alır ya da bir fonksiyon döndürür. JavaScript'te map, filter ve reduce birer higher-order fonksiyondur çünkü bir callback fonksiyonu alırlar.

[1, 2, 3].map(x => x * 2);

Burada map, x => x * 2 fonksiyonunu alır ve her elemana uygular. Higher-order fonksiyonlar kodu kısa ve yeniden kullanılabilir yapar; iş mantığını küçük fonksiyonlara bölmeyi sağlar.

Fonksiyon döndüren fonksiyonlar

Bir higher-order fonksiyon ayrıca fonksiyon döndürebilir. Bu, bir fabrika kurmak gibidir: dış fonksiyon bir ayar alır, iç fonksiyon o ayara göre iş yapar.

function createMultiplier(factor) {
  return n => n * factor;
}
const double = createMultiplier(2);

Burada createMultiplier(2) çağrısı double adında yeni bir fonksiyon üretir. factor closure'da saklanır ve her çağrıda kullanılır. Bu, önceden yapılandırılmış fonksiyonlar yaratmanın güçlü bir yoludur.

Uygulama createMultiplier fabrikasını yaz

createMultiplier adında higher-order bir fonksiyon yaz. factor parametresi alır ve n => n * factor döndüren bir fonksiyon döndürür. Sonra const double = createMultiplier(2); ve console.log(double(5)); çağrısı yap.

Başlangıç kodu

script.js
// createMultiplier higher-order fonksiyonunu yaz
// factor alır, n => n * factor döndürür
// double adında değişken oluştur ve double(5) sonucunu yazdır

Örnek çözüm

script.js
function createMultiplier(factor) {
  return n => n * factor;
}
const double = createMultiplier(2);
console.log(double(5));

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangisi higher-order fonksiyondur?

  • [1, 2].filter(x => x > 1) Doğru cevap
  • 'abc'.toUpperCase()
  • Math.max(1, 2, 3)
  • Number('42')

Açıklama: filter bir fonksiyon alır; bu yüzden higher-order'dır.

2 Prefix fabrikasını çağır

Soru
const withPrefix = prefix => text => prefix + text;
const greet = withPrefix(____);
Cevap
const withPrefix = prefix => text => prefix + text;
const greet = withPrefix('Merhaba ');

Açıklama: withPrefix('Merhaba ') text => 'Merhaba ' + text fonksiyonunu döndürür.

3 Higher-order örneklerini eşleştir

Kavram Anlamı
map fonksiyon alır
withPrefix fonksiyon döndürür
filter koşul fonksiyonu alır

İleri seviye bölümündeki tüm dersler