Look, JS is a language like any other. If I can do something in assembly, I can do it in JS. Give me IF statements (preferably with nesting support) and variables, and there's nothing that cannot be done. What remains is how easy, how nice, how flexible, how enjoyable, how compatible, how reliable, how practical. For me, the answer is C++, but don't let that influence you ;-)
I know you were exaggerating here, but simple conditional statements aren't actually sufficient. You need some construct that allows repetition, if only implicitly. "while" loops would be easy, but even simple function calls suffice if you have function pointers (in fact, allowing function pointers alone ought to be enough, without conditionals or even variables).
At any rate, it's the lack vs. presence of repetition constructs that makes SQL not a full general-purpose language, where XSLT actually is.