Вот код:
function repeat(operation, num) {
return function() {
if (num <= 0) return
operation()
return repeat(operation, --num)
}
}
function trampoline(fn) {
while(fn && typeof fn === 'function') {
fn = fn()
}
}
module.exports = function(operation, num) {
trampoline(function() {
return repeat(operation, num)
})
}
Я читал, что батут используется для решения проблемы переполнения, поэтому функция не просто сохранит сам вызов и стек.
Но как работает этот сниппет? Особенно функция trampoline
? Что он сделал именно с помощью while
и как он достиг своей цели?
Спасибо за любую помощь:)