## Callback (Geri Çağırma) Fonksiyonları
**Callback fonksiyonları**, bir başka fonksiyona argüman olarak geçirilen ve bu fonksiyonun içerisinde belirli bir zamanda veya belirli bir koşul sağlandığında çalıştırılan fonksiyonlardır. Esasen, "Bunu yap, sonra şunu yap" mantığını temsil ederler.
**Temel Kavramlar:**
* **Asenkron Programlama:** Callback'ler, özellikle [asenkron programlama](https://www.nedemek.page/kavramlar/asenkron%20programlama) senaryolarında sıklıkla kullanılır. Bu senaryolarda, bir işlemin tamamlanması zaman alabilir (örneğin, bir ağ isteği veya dosya okuma). Callback, bu işlemin tamamlandığını bildirmek ve sonuçları işlemek için kullanılır.
* **Event Handling (Olay İşleme):** Web tarayıcılarında, kullanıcı etkileşimleri (tıklamalar, tuş vuruşları, vb.) olaylar (event) olarak adlandırılır. Callback fonksiyonları, bu olaylar gerçekleştiğinde tetiklenir ve ilgili işlemleri gerçekleştirir. Bu, [event%20handling](https://www.nedemek.page/kavramlar/event%20handling) olarak bilinir.
* **Yüksek Dereceli Fonksiyonlar (Higher-Order Functions):** Callback kullanan fonksiyonlar genellikle "yüksek dereceli fonksiyonlar" olarak adlandırılır. Çünkü bu fonksiyonlar, başka fonksiyonları argüman olarak kabul ederler. JavaScript'teki `map`, `filter`, ve `reduce` gibi dizi metotları, yüksek dereceli fonksiyonlara örneklerdir ve genellikle callback'lerle birlikte kullanılırlar.
**Kullanım Alanları:**
* **Zamanlayıcılar (Timers):** `setTimeout` ve `setInterval` gibi fonksiyonlar, belirli bir süre sonra veya belirli aralıklarla bir callback fonksiyonunu çalıştırmak için kullanılır.
* **Ağ İstekleri (Network Requests):** Bir sunucuya yapılan HTTP isteği tamamlandığında, sunucudan gelen yanıtı işlemek için bir callback fonksiyonu kullanılır.
* **Animasyonlar:** Animasyonlar oluşturmak için, her kareyi çizmek üzere bir callback fonksiyonu kullanılabilir.
**Avantajları:**
* **Esneklik:** Callback'ler, bir fonksiyonun davranışını, çağıran kod tarafından belirlenen farklı durumlara göre özelleştirme imkanı sunar.
* **Asenkron Yönetimi:** Uzun süren işlemleri engellemeden (blocking) yönetmeyi sağlar.
* **Kodun Yeniden Kullanılabilirliği:** Aynı fonksiyon, farklı callback'lerle farklı amaçlar için kullanılabilir.
**Dezavantajları:**
* **Callback Hell (Geri Çağırma Cehennemi):** Çok sayıda iç içe geçmiş callback fonksiyonu, kodun okunabilirliğini ve bakımı zorlaştırabilir. Bu sorun, [promise'ler](https://www.nedemek.page/kavramlar/promise'ler) ve [async/await](https://www.nedemek.page/kavramlar/async%20await) gibi yapılarla çözülmeye çalışılmıştır.
* **Hata Yönetimi:** Callback'lerdeki hataları yönetmek, özellikle iç içe geçmiş callback'lerde zor olabilir.
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page