Oke, bayangkan browser itu kayak restoran cepat saji.
Call stack itu dapurnya. Kalau pesanan datang bertubi-tubi tanpa henti, koki bakal kewalahan, terus dapurnya bisa meledak!
Nah, "Maximum Call Stack Size Exceeded" itu artinya kita nyuruh JavaScript masak tanpa henti sampai dia nangis.
Penyebab & Cara Mengatasinya
Rekursi Tanpa Henti (Alias: Dosa Programmer Pemula)
Salahnya:
function masakMie() {
console.log("Lagi masak mie...");
masakMie(); // Lah? Gak kelar-kelar dong?
}
masakMie(); // *BOOM!*
JavaScript bakal nyoba masak mie sampe kiamat.
Solusinya:
function masakMie(n) {
if (n <= 0) {
console.log("Mienya udah jadi!");
return;
}
console.log(`Masak mie ke-${n}...`);
masakMie(n - 1);
}
masakMie(5); // Mienya jadi, gak ada ledakan!
Loop Tak Berujung (Alias: Mesin Waktu Tanpa Rem)
Salahnya:
function hitung(n) {
if (n > 0) {
console.log(n);
hitung(n + 1); // Makin gede terus, gak pernah berhenti!
}
}
hitung(1); // *Kiamat stack lagi!*
JavaScript bakal ngitung sampai terbakar.
Solusinya:
function hitung(n) {
if (n <= 0) return;
console.log(n);
setTimeout(() => hitung(n - 1), 100); // Santai dikit, kasih napas!
}
hitung(5);
Dengan setTimeout, JavaScript gak bakal langsung overheat!
Muter di Dalam Array (Alias: Kesasar di Labirin)
Salahnya:
let data = [1, 2, 3];
data.push(data); // WOI?! Kok array masukin dirinya sendiri?
console.log(JSON.stringify(data)); // *Boom! Stack overload!*
JavaScript bingung, array ini kayak cermin tanpa ujung.
Solusinya:
let data = [1, 2, 3];
console.log("Maaf, gak bisa serialize array yang referensi dirinya sendiri!");
Jangan masukin array ke dalam dirinya sendiri, JavaScript bukan filosofi Zen!
Kesimpulan
- Jangan rekursi tanpa batas, kasih base case biar ada akhirnya.
- Jangan bikin loop yang gak bisa berhenti.
- Jangan bikin referensi ke diri sendiri di objek atau array.
Pokoknya, jangan bikin JavaScript overthinking!
Semoga dapur (call stack) kamu aman dari kebakaran!
0 Comments