Прочитав описание Dr Rauschmayer в рекурсивной оптимизации хвостового вызова в es6, я с тех пор пытался воссоздать выполнение "нулевого стека" рекурсивной факториальной функции он детализирует.
Используя отладчик Chrome для шага между кадрами стека, я вижу, что оптимизация хвоста не происходит, и создается кадр стека для каждой рекурсии.
Я также попытался проверить оптимизацию, вызвав функцию без отладчика, но вместо этого передав 100000
в факториальную функцию. Это вызывает ошибку "максимального стека", что означает, что она фактически не оптимизирована.
Вот мой код:
const factorial = (n, acc = 1) => n <= 1 ? acc : factorial(n - 1, n * acc)
console.log( factorial(100000) )
Результат:
Uncaught RangeError: Maximum call stack size exceeded