I am impressed but I'm also wondering why people try to avoid learning new stuff -- to potential downvoters, no rant intended. I am just surprised how many people try to circumvent JS: Rubyists with Coffee, Closurists with ClosureScript, etc. instead of just using JS directly. I don't believe the main motivation is JS' potential inferiority and that you could employ much better design pattern with languages compiling to JS. Neither, JS' syntax is bad or ugly. I assume that's it's the fear of learning something new, to be again a beginner. JS has its quirks but in general it's a very modern and beautiful language and offering more innovation than traditional scripting languages. And V8 is so blazingly fast that I sometimes think this feels more like C compiled code which would be just another reason rather to switch to JS in the backend.
Out of those 5, two is bad and should never be done but you would be lucky if any book mention this fact. Of the three left, only two is ever considered as good through noone can agree which one is the preferred way. One solution ends up being neither hated or praised enough to be worth mentioning in a book or ranting article.
You chose a good example showing that JS is not perfect but I think every language has some quirks and needs time and energy to get familiar. Of course such strange behaviour demotivates beginners and yes JS can be hard but it's still a great language and there so many good parts you didn't mention. Besides, teaching a language is also very hard since the best way to learn a language is practise, practise, practise and having problems: sometimes when I am stuck with a problem for hours or even days, googling, asking on IRC, StackOverflow I gain so much knowledge I wouldn't get in a 2h class.
Besides, there are so many great JS libraries now that in most cases, I wouldn't want to switch to Lua in the browser and face re-inventing the wheel (same reason why I generally use Python instead of Lua elsewhere). But its fun to think about.
> nothing about either language makes one inherently faster than the other
You can't make such a statement confidently unless you examine the specs of both languages.
For example, Python integers promote to bigints automatically while JS numbers don't. For one more, in Python you can overload attribute access, while in JS you can't. Both of these are language features rather than implementation details, and both potentially affect performance. There are probably others.
> makes it quicker to write and improvise with new ideas,
I've never thought about that but could make sense.
> as well as its enforced whitespace, which makes it easier to write maintainable code.
This is something I've never understood and where I tend to disagree. When starting with "whitespace" languages like Coffee, Ruby or Python people initially are please with clean and tidy looking code but in the long run this code is not maintainable since all the white space makes the code looking not distinctively enough. In contrast, bracket based languages like C or JS give much better orientation. I can quickly see where code blocks start or I can immediately recognise functions etc.
> Lua, on the other hand, would be an excellent browser language