Call Stack Nedir?
Bu yazımızda, “call stack nedir?” sorusunu cevaplayacağız.
“Call Stack,” Türkçede “çağrı yığını” olarak bilinir ve programlama dünyasında önemli bir yapıyı ifade eder. Bu yapı, bir programın çalışırken yaptığı fonksiyon çağrılarını takip etmek için kullanılır. Hangi fonksiyonun şu anda çalıştığını, nereden çağrıldığını ve hangi sırayla çalıştırıldığını bu yapı sayesinde anlayabiliriz.
Call Stack Nasıl Çalışır?
Call Stack, LIFO (Last In, First Out – Son Giren İlk Çıkar) prensibine dayanır. Adından da anlaşılacağı üzere, yığına en son eklenen fonksiyonun ilk olarak işleneceği anlamına gelir. Kavramı somutlaştıralım:
Bir alışveriş poşeti doldurduğunuzu hayal edin. İlk koyduğunuz ürün poşetin dibine yerleşir, son koyduğunuz ürün ise en üstte durur. Eve döndüğünüzde ürünleri çıkarırken, önce üstteki (yani en son koyduğunuz) ürünü alırsınız. İşte “Call Stack” denilen şey tam da böyle çalışır: Yeni fonksiyonlar yığının en üstüne eklenir ve tamamlandıkça yığından çıkarılır.
JavaScript’te Call Stack Kullanımı
JavaScript, tek iş parçacıklı (single-thread) bir dildir. Bu nedenle, aynı anda yalnızca bir Call Stack kullanır ve bir seferde yalnızca tek bir iş yapabilir. Bu çalışma prensibi, JavaScript’in sıralı bir şekilde işlem yapmasını sağlar.
Bir fonksiyon çağrıldığında, Call Stack’in en üstüne eklenir. Bu fonksiyon tamamlandığında yığından çıkarılır. Eğer bir fonksiyon içinde başka bir fonksiyon çağrılırsa, bu yeni fonksiyon yığının en üstüne eklenir ve öncelikli olarak işlenir.
Aşağıdaki örneği inceleyelim:
function add(a, b) {
return a + b;
}
function average(a, b) {
return add(a, b) / 2;
}
let result = average(10, 20);
Bu kodun Call Stack üzerinde nasıl çalıştığını adım adım inceleyelim:
- Global çalışma bağlamı başlar ve
average(10, 20)
çağrılır. average()
fonksiyonu yığının en üstüne eklenir.average()
içindekiadd(10, 20)
çağrılır, bu yüzdenadd()
yığının en üstüne eklenir.add()
işini tamamlar ve yığından çıkarılır.average()
sonucu döndürür ve yığından çıkarılır.- Kontrol, global çalışma bağlamına geri döner.

Özetle, Call Stack, bir programın çalışma sırasında fonksiyonları hangi sırayla işlediğini anlamamızı sağlar. JavaScript gibi tek iş parçacıklı dillerde bu yapı hayati öneme sahiptir. Ancak kapasitenin sınırlı olduğunu ve hatalardan kaçınmak için dikkatli bir şekilde kullanılmasının gerektiğini unutmamak gerekir.
Call Stack Kapasitesi ve Stack Overflow
Her Call Stack, sınırlı bir kapasiteye sahiptir. Çok fazla fonksiyon çağrısı yapılırsa ve bu çağrılar yığının kapasitesini aşarsa, “stack overflow” adı verilen bir hata oluşur. Bu hata, genellikle sonsuz döngüler ya da yanlış yazılmış rekürsif (kendini çağıran) fonksiyonlar nedeniyle meydana gelir.
Yeri gelmişken: Yazılım dünyasında çokça kullanılan “stackoverflow.com” adlı popüler soru-cevap platformu, adını bu hatadan almıştır!