CodeBlanks Logo Icon CodeBlanks

Higher-order functions

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

index.js
// makeMultiplier fonksiyonunu tanımla, triple oluştur ve çağrı sonuçunu yazdır

Örnek çözüm

index.js
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

Soru
function makeAdder(n) {
  return (m) => n ____ m;
}
Cevap
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ı

Başlangıç bölümündeki tüm dersler