function x() { return x(); }
(define (foo) (foo))
(foo)
The main problem is still that Chrome and Firefox don't support tail call elimination. Babel (6to5) and Traceur do.
function x() { return x(); }