Lingua-e
← Errores
JavaScript

Qué significa Maximum call stack size exceeded y cómo solucionarlo

Referencia del error

Maximum call stack size exceeded

Lenguaje

JavaScript

Severidad

Crítica

Cuá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

JavaScript

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