Почти всегда так делаю
requestAnimationFrame или setInterval
Такой механизм создает замыкание
он позволяет сохранять переменные в функции что позволяет не засирать глобальную область видимости и избегать конфликтов
да и сам вызов методов через цепочку .x().y().z() прост удобен и понятен