Uncaught RangeError: Maximum call stack size exceeded
Hatası aldıysanız birşeler ters gitmeye başlamış demektir. Bu hata genelde tarayıcının sınırlarının zorlandığını gösterir. Özellikle iç içe fonksiyon çağrıldığında alınan bir hatadır. JavaScript ile geliştirme yaparken, iç içe fonksiyon çağrıları için tarayıcılarda sınırlama vardır. Bu nedenle çok sayıda iç içe çağrı yapıldığında Uncaught RangeError: Maximum call stack size exceeded hatası olaşacaktır.
Örnek bir uygulama yaparsak
const soyle = (sayi) => {
let mesaj = sayi % 2 === 0 ? "Merhaba" : "Hoşçakal";
console.log(mesaj);
sayi += 1;
soyle(sayi);
}
soyle(1);
Yukardaki örneği çalıştırdıktan bir süre sonra hata mesajı vererek uygulama sona erecektir. Çünkü soyle fonksiyonu iç içe kendini sürekli olarak çağıracağı için maximum stack size değeri aşılacaktır. Aslında kodda bir sorun yok fakat sorun tarayıcının kapasitesinde. Bu nedenle kodumuzu tarayıcının kapasitesine göre düzenlememiz gerekecektir.

Yukarıdaki örneğimize geri dönecek olursak, eğer hata almadan kodun çalışmasını istersek, bir kontrol yapısı uygulayarak fonksiyonun kendini tekrardan çağırması engellenebilir.
const soyle = (sayi) => {
let mesaj = sayi % 2 === 0 ? "Merhaba" : "Hoşçakal";
console.log(mesaj);
sayi += 1;
if(sayi > 10 ) return; // sayı 10 dan büyükse geri dön.
soyle(sayi);
}
soyle(1);
Basit bir kontrol ile soyle fonksiyonunun kendini çok fazla çağırmasını engellemiş olduk.

Bu hatayı aldığımızda yapmamız gereken stack size değerinin aşılmasına neden olan fonksiyonun çağrılma işlemini optimize ederek uygulamamızı çalıştırmaktır.
Sormak istediğiniz soru veya konu hakkında eklemek istedikleriniz varsa yorumlara ekleyebilirsiniz.
