Задать вопрос
@ruboss

Как рабтает рекурсия в javascript с setTimeout?

Будет ли хранится где-то информация о вызовах сеттаймаут в браузере?
Вот к примеру такой код
function recursion(c){
    setTimeout(function(){
        c = c || 0;
        console.log(c++);
        recursion(c);
    },c);
}

recursion(0);


1) Если данный скрипт будет работать длительное время, будет ли забиватся память?
2) Хранит ли браузер предыдущие вызовы сеттаймаутов? Или же id setTimeout(ов) будут удалятся?
3) Есть ли максимальная глубина рекурсии?
  • Вопрос задан
  • 1416 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
petermzg
@petermzg
Самый лучший программист
1. Не будет
2. Нет. ID удалиться.
3. Есть, но не в этом случае.

У вас ошибка в коде. У вас 2 локальных переменных "с", одна локальна для recursion(c), другая function(c)
И в случае function(c) - она будет всегда udefined.
Если вы хотите использовать "с" из recursion(c), то уберите из параметров второй (вложенной) функции.
Ответ написан
@ruboss Автор вопроса
Нашел темку на стеке. Ответ - рекурсии как таковой нету ибо контекст функции recursion заканчивает свое действие и только потом вызывается setTimeout. Т.о. проблем с памятью не будет

stackoverflow.com/a/6779616/5562116
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы