Lingua-e
JavaScript

¿Qué significa Maximum call stack size exceeded?

← Errores

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

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ó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