Представьте, что у меня есть эта гипотетическая функция (в JavaScript):
function paginationRecursive(results) {
let intermediate = retrieveNextPage();
results = results.concat(intermediate)
if (haveAllResults()) return results;
return paginationRecursive(results);
}
Будет ли каждое значение intermediate
храниться в памяти до тех пор, пока не будет завершена вся рекурсивная обработка, что будет увеличивать использование памяти для каждого рекурсивного вызова каждый раз? Или движок / gc достаточно умен, чтобы освободить эту память в любое время, когда мы делаем один вызов «глубже», потому что он знает, что переменная больше никогда не будет использоваться?
Возможно, это зависит от двигателя (например, V8 , SpiderMonkey , Chakra , и т. Д. ), поэтому сделайте этот вопрос не слишком широким, я предпочитаю знать ответ для двигателя V8.