Qué significa Maximum call stack size exceeded y cómo solucionarlo
Referencia del error
Maximum call stack size exceeded
Lenguaje
Severidad
CríticaCuándo ocurre
Este RangeError se lanza en JavaScript cuando el call stack se desborda porque demasiadas llamadas de función están anidadas sin retornar.
Posibles soluciones
Agrega un caso base a cada función recursiva y verifica que cada ruta de ejecución eventualmente lo alcance. Convierte la recursión profunda a un bucle iterativo con una estructura de datos de pila explícita. Usa setTimeout o queueMicrotask para romper cadenas de llamadas síncronas y ceder el control de vuelta al motor.
Errores relacionados
Más detalles
Este RangeError se lanza en JavaScript cuando el call stack se desborda porque demasiadas llamadas de función están anidadas sin retornar. Cada llamada de función agrega un marco al stack, y el motor impone un límite para prevenir un crecimiento descontrolado de la memoria.
Por qué ocurre
- •Una función recursiva que no tiene caso base y se llama a sí misma indefinidamente.
- •Dos funciones que se llaman mutuamente en un ciclo sin condición de salida.
- •Un manejador de eventos que reacciva accidentalmente el mismo evento, causando un bucle infinito de llamadas.
- •Cadenas de promesas o callbacks síncronos muy anidados que acumulan marcos.
Posibles soluciones
Agrega un caso base a cada función recursiva y verifica que cada ruta de ejecución eventualmente lo alcance. Convierte la recursión profunda a un bucle iterativo con una estructura de datos de pila explícita. Usa setTimeout o queueMicrotask para romper cadenas de llamadas síncronas y ceder el control de vuelta al motor.
Ejemplos
Código que causa el error
function countDown(n) {
console.log(n);
countDown(n - 1); // no base case
}
countDown(5);Error en la terminal
5 4 3 2 1 0 -1 ... RangeError: Maximum call stack size exceeded
Código corregido
function countDown(n) {
if (n < 0) return; // base case stops recursion
console.log(n);
countDown(n - 1);
}
countDown(5);Practica en inglés
¿Cómo le explicarías un Maximum call stack size exceeded a un compañero dev? Elige la frase correcta:
"I hit an error...
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis