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.
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ómo solucionarlo
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.
Código corregido
function countDown(n) {
if (n < 0) return; // base case stops recursion
console.log(n);
countDown(n - 1);
}
countDown(5);Errores relacionados
¿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