Üretici fonksiyonlar
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
-
İ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.
-
İ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()); -
Ü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