CodeBlanks Logo Icon CodeBlanks

Üretici fonksiyonlar

JavaScript kursu · Orta seviye · Ders 14/134

Bir fonksiyonun döndürdüğü fonksiyonun nasıl özel durumu yakaladığını öğrenirsin.

Üretici fonksiyon

Bir üretici fonksiyon, yeni bir fonksiyon üretip döndüren fonksiyondur. Döndürülen fonksiyon, üreticinin yerel değişkenini yakalar; bu değişken dışarıdan erişilemez bir özel durum (private state) olur.

Üretici her çağrıldığında taze bir kapsamla yeni bir closure doğar. Bu yüzden iki ayrı sayaç bağımsızdır: her birinin kendi sayısı vardır.

Bağımsız durum

İki sayaç üretmek için makeCounter()'ı iki kez çağırırsan, her çağrı ayrı bir let count = 0 oluşturur. Döndürülen iki closure farklı count değişkenlerine bağlanır.

Birini artırmak diğerini etkilemez. Bu, closure'ın gücüdür: aynı üretici kodu, bağımsız durumları olan birden çok örnek üretir.

Uygulama Sayaç üreticisi yaz

makeCounter() adında bir fonksiyon tanımla. İçinde let count = 0 ile özel bir sayaç başlat. Döndürdüğü iç fonksiyon count'u bir artırıp döndürsün. Sonra iki ayrı sayaç oluştur (c1 ve c2) ve her birini bir kez çağırıp sonucu yazdır.

Örnek çözümü göster
function makeCounter() {
  let count = 0;
  return function() {
    count++;
    return count;
  };
}

const c1 = makeCounter();
const c2 = makeCounter();
console.log(c1());
console.log(c2());

Kendini test et

  1. İki sayaç makeCounter() ile üretilirse ne olur?

    • Aynı sayacı paylaşırlar
    • Her birinin bağımsız sayacı olur
    • Yalnızca ilki çalışır
    • İkisi de hep sıfır döndürür
    Cevabı göster

    Her birinin bağımsız sayacı olur — Doğru. Her çağrı yeni bir count değişkeni oluşturur; iki closure farklı değişkenlere bağlanır.

  2. İlk sayacı çağır

    const c1 = makeCounter();
    const c2 = makeCounter();
    console.log(c1____());
    console.log(c2());
    Cevabı göster
    const c1 = makeCounter();
    const c2 = makeCounter();
    console.log(c1()());
    console.log(c2());
  3. Üretici kavramlarını eşleştir

    factory function
    Başka fonksiyon üreten fonksiyon
    private state
    Dışarıdan erişilemeyen durum
    counter
    Sayacı artıran closure

Orta seviye bölümündeki tüm dersler