Рекурсивные замыкания в JavaScript

Допустим, у меня есть что-то вроде

function animate(param)
{
    // ...
    if (param < 10)
        setTimeout(function () { animate(param + 1) }, 100);
}

animate(0);

Означает ли это, что каждый экземпляр локальных данных функции будет храниться в памяти до завершения анимации, то есть до тех пор, пока параметр не достигнет 10?

Если он правда, что экземпляры хранятся в памяти, есть ли лучший способ сделать это? Я знаю, что передача текстового кода в setTimeout () решает проблему, но в моем случае среди аргументов функции есть объекты, которые не могут быть легко представлены в виде строк.

36
задан Glen Selle 26 October 2015 в 14:59
поделиться