@ruboss

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

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

recursion(0);


1) Если данный скрипт будет работать длительное время, будет ли забиватся память?
2) Хранит ли браузер предыдущие вызовы сеттаймаутов? Или же id setTimeout(ов) будут удалятся?
3) Есть ли максимальная глубина рекурсии?
  • Вопрос задан
  • 1415 просмотров
Решения вопроса 2
@ruboss Автор вопроса
Нашел темку на стеке. Ответ - рекурсии как таковой нету ибо контекст функции recursion заканчивает свое действие и только потом вызывается setTimeout. Т.о. проблем с памятью не будет

stackoverflow.com/a/6779616/5562116
Ответ написан
Комментировать
petermzg
@petermzg
Самый лучший программист
1. Не будет
2. Нет. ID удалиться.
3. Есть, но не в этом случае.

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

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

Войти через центр авторизации
Похожие вопросы