Advertisement

Mengatasi Maximum Call Stack Size Exceeded

 


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

  1. Jangan rekursi tanpa batas, kasih base case biar ada akhirnya.
  2. Jangan bikin loop yang gak bisa berhenti.
  3. Jangan bikin referensi ke diri sendiri di objek atau array.

Pokoknya, jangan bikin JavaScript overthinking!
Semoga dapur (call stack) kamu aman dari kebakaran! 

Post a Comment

0 Comments