crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
JavaScript kodunuz çalışırken, değişkenlerin nerede "yaşayacağını" ve onlara nereden ulaşılabileceğini belirleyen kurallar bütününe Scope diyoruz. Bu Scope yapısının bir sonucu olarak ortaya çıkan ve geliştiricilere süper güçler veren yapı ise Closure'dır.
JavaScript'te üç ana kapsam türü vardır. Bunlar, değişkenlerin görünürlük sınırlarını çizer.
JavaScript, bir değişkeni ararken önce mevcut kapsama bakar. Bulamazsa bir üst kapsama çıkar. Bu yukarı doğru arama sürecine Scope Chain (Kapsam Zinciri) denir. Karar, kodun çalıştığı yere göre değil, yazıldığı yere göre verilir.
İşte en can alıcı nokta burası. Closure, bir fonksiyonun, kendisini çevreleyen (dış) kapsamdaki değişkenleri, o dış kapsam çalışmasını bitirse bile "hatırlaması" durumudur.
Neden Önemlidir?
Veri gizliliği (private variables) sağlamak ve fonksiyon fabrikaları kurmak için kullanılır.
JavaScript, artık ihtiyaç duyulmayan verileri temizlemek için Garbage Collector (Çöp Toplayıcı) kullanır.
Sonuç
Scope ve Closure yapılarını anlamak, kodunuzda verilerin nasıl aktığını ve nerede saklandığını kontrol etmenizi sağlar. Özellikle büyük projelerde veri güvenliğini sağlamak ve modüler yapılar kurmak için Closure vazgeçilmez bir araçtır.
1. Kapsam (Scope) Türleri
JavaScript'te üç ana kapsam türü vardır. Bunlar, değişkenlerin görünürlük sınırlarını çizer.
[]Global Scope: Herhangi bir fonksiyonun veya bloğun dışında tanımlanan değişkenlerdir. Kodun her yerinden erişilebilirler. Fazla kullanımı bellek kirliliğine yol açar.
[]Function (Local) Scope: Sadece tanımlandığı fonksiyonun içinden erişilebilen değişkenlerdir. Fonksiyon bittiğinde bellekten silinirler.- Block Scope (ES6): let ve const ile gelen bir özelliktir. Sadece { } parantezleri (if, for gibi) içinde geçerlidirler.
2. Lexical Scope (Sözdizimsel Kapsam)
JavaScript, bir değişkeni ararken önce mevcut kapsama bakar. Bulamazsa bir üst kapsama çıkar. Bu yukarı doğru arama sürecine Scope Chain (Kapsam Zinciri) denir. Karar, kodun çalıştığı yere göre değil, yazıldığı yere göre verilir.
JavaScript:
let isim = "Ahmet";
function disFonksiyon() {
// disFonksiyon'un kapsamı
function icFonksiyon() {
// icFonksiyon'un kapsamı
console.log(isim); // Burada 'isim' yok, bir üste bakar, orada da yoksa globale çıkar.
}
icFonksiyon();
}
disFonksiyon(); // Çıktı: Ahmet
3. Closure (Kapanış) Nedir?
İşte en can alıcı nokta burası. Closure, bir fonksiyonun, kendisini çevreleyen (dış) kapsamdaki değişkenleri, o dış kapsam çalışmasını bitirse bile "hatırlaması" durumudur.
Neden Önemlidir?
Veri gizliliği (private variables) sağlamak ve fonksiyon fabrikaları kurmak için kullanılır.
JavaScript:
function sayacOlustur() {
let adet = 0; // Bu değişken dışarıdan doğrudan erişilemez (Private)
return function() {
adet++; // İçteki fonksiyon dıştaki 'adet' değişkenini "kapatır" (Closure)
return adet;
};
}
const artır = sayacOlustur();
console.log(artır()); // 1
console.log(artır()); // 2
console.log(artır()); // 3
// 'adet' değişkeni hala bellekte yaşıyor çünkü 'artır' fonksiyonu ona bağlı!
4. Bellek Yönetimi ve Garbage Collector
JavaScript, artık ihtiyaç duyulmayan verileri temizlemek için Garbage Collector (Çöp Toplayıcı) kullanır.
[]Normal Durum: Bir fonksiyon çalışıp bittiğinde, içindeki yerel değişkenler bellekten atılır.
[]Closure Durumu: Eğer bir fonksiyon, dışarıdaki bir değişkene Closure ile bağlıysa, o fonksiyon yaşadığı sürece o değişken bellekten silinmez.
Dikkat: Gereksiz yere oluşturulan büyük Closure yapıları, bellekte fazla yer kaplayarak "Memory Leak" (Bellek Sızıntısı) denilen performans sorunlarına yol açabilir. İşiniz bittiğinde referansları null yaparak belleği serbest bırakabilirsiniz.
Özet Karşılaştırma
| Kavram | Tanım | Bellek Durumu |
|---|---|---|
| Scope | Değişkenlerin sınırları ve erişilebilirliği. | Kapsam dışına çıkıldığında temizlenmeye hazırdır. |
| Closure | Dış kapsamdaki veriyi hafızada tutma yeteneği. | Referans olduğu sürece bellekte korunur. |
Sonuç
Scope ve Closure yapılarını anlamak, kodunuzda verilerin nasıl aktığını ve nerede saklandığını kontrol etmenizi sağlar. Özellikle büyük projelerde veri güvenliğini sağlamak ve modüler yapılar kurmak için Closure vazgeçilmez bir araçtır.