İçeriğe geç
parazade

Closure Ne Demek?

Yayın: · Son güncelleme:

Closure Ne Demek? Kısaca

Closure, bir fonksiyonun tanımlandığı ortamdaki değişkenleri, o ortam sona erdikten sonra da hatırlayıp kullanabilmesidir. Türkçede kapanım olarak da geçer ve özellikle JavaScript'te sık karşılaşılır.

Closure nedir?
İçindekiler
  1. Closure ne demek?
  2. Nasıl çalışır?
  3. Nerelerde kullanılır?
  4. Nelere dikkat etmeli?

Closure ne demek?

Closure, bir fonksiyonun doğduğu ortamdaki değişkenleri yanında taşımasıdır. Dış fonksiyon çalışmasını bitirse bile, içeride tanımlanmış fonksiyon o değişkenlere erişmeye devam eder. Türkçe kaynaklarda "kapanım" ya da "kapatma" olarak da çevrilir.

Nasıl çalışır?

Normalde bir fonksiyonun yerel değişkenleri fonksiyon bitince ortadan kalkar. Ancak içeride bir fonksiyon tanımlanıp dışarıya döndürülürse, dil o değişkenleri silmez. Çünkü iç fonksiyon hâlâ onlara ihtiyaç duyar. Bu bağlantı, değişkenin tanımlandığı kapsam ile ilgilidir.

Basit bir sayaç örneği bunu gösterir. sayacOlustur adlı fonksiyon içinde let sayi = 0 tanımlar ve sayıyı bir artırıp döndüren küçük bir fonksiyon geri verir. Bu küçük fonksiyonu her çağırdığınızda 1, 2, 3 sonuçlarını alırsınız. sayi değişkenine dışarıdan doğrudan erişmek ise mümkün değildir.

Nerelerde kullanılır?

Veriyi dışarıdan gizlemek, olay dinleyicilerine bağlam taşımak ve ayarları önceden sabitlenmiş fonksiyonlar üretmek en yaygın kullanımlardır. Örneğin indirimUygula(0.2) çağrısı, her fiyata yüzde 20 indirim uygulayan yeni bir fonksiyon döndürebilir.

Nelere dikkat etmeli?

Döngü içinde closure oluştururken eski JavaScript kodunda var kullanmak, tüm fonksiyonların aynı son değeri görmesine yol açar. let kullanmak bu sorunu çözer. Uzun yaşayan closure'ların büyük nesneleri tutup tutmadığını da kontrol edin.

Sıkça Sorulan Sorular

Closure hangi dillerde vardır?

JavaScript, Python, Swift, Kotlin, C# ve Go gibi fonksiyonları değer olarak kullanabilen dillerin çoğunda closure bulunur. Kullanım biçimi dile göre küçük farklar gösterir.

Closure bellek sızıntısına yol açar mı?

Yanlış kullanılırsa açabilir. Closure büyük bir nesneye referans tutuyorsa ve kendisi uzun süre yaşıyorsa, o nesne bellekten temizlenemez.

İlgili terimler