Error que se produce cuando un programa agota la memoria disponible para la pila de ejecución.
Generalmente debido a una recursión infinita, bucles mal gestionados, objetos de gran tamaño o ausencia de eliminación de recursos.
// Causa común: recursión infinita function recursionInfinita() { return recursionInfinita(); // ❌ Sin caso base } // RangeError: Maximum call stack size exceeded // Solución: agregar caso base function factorial(n) { if (n <= 1) return 1; // ✅ Caso base return n * factorial(n - 1); } // Otra causa: estructuras circulares muy profundas const obj = {}; obj.self = obj; JSON.stringify(obj); // ❌ Error // Solución para recursión profunda: usar iteración function factorialIterativo(n) { let resultado = 1; for (let i = 2; i <= n; i++) { resultado *= i; } return resultado; } // O usar trampolín para tail recursion function trampoline(fn) { return (...args) => { let result = fn(...args); while (typeof result === 'function') result = result(); return result; }; }