A simple question: Why can I do this
var start = function() { $(\'#element\').animate({}, 5000, \'linear\', start); }
but not this
In the second case, you're calling the function directly, instead of passing it as a parameter.
start() will call start immediately, and pass the return value of that to .animate(). This causes the infinite self recursion.
start()
.animate()