JavaScript | Как переполнить стек вызовов функций?

JavaScript | Как переполнить стек вызовов функций?

Самый простой способ — это использовать рекурсивную функцию с гарантированным условием выхода через 100000 итераций. Функция вызывает сама себя.

function f(x){
   x > 100000 ? console.log('Готово') : f(x+1)
}

f(1)

Мы используем «Условный Оператор» для возвращения из функции результата.

Результат работы — Ошибка «RangeError: Maximum call stack size exceeded» :

Переполнили стек вызовов функций рекурсией - JavaScript
Переполнили стек вызовов функций рекурсией — JavaScript

Когда функция возвращает саму себя, то фактически она не может вычислить конечного значения. В результате первая функция ждёт вторую, вторая третью, и так далее пока самая последняя из ста тысяч не наткнётся в условии на «x > 100000″ и завершится нормально. Только после этого результаты начнут возвращаться в первую функции и освобождать стек вызовов.