The JS community is not an argument for JS I feel, because it does not have a track record of providing reliable software. Most libraries are new and a lot of devs are very lax with security or code robustness. If you use a library/tool you're not sure what you're getting - see the semicolon situation or the npm directory deletion.
This scope trick (and really, the whole JS language situation) always reminded me of the "closures vs. objects" koan:
http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/m...
var mariner= {};
mariner.new = function(){
var self = {};
var maxhp = 200;
var hp = maxhp;
self.heal = function(deltahp) {
if (hp + deltahp < maxhp){
hp = hp + deltahp;
} else {
hp = maxhp;
}
}
self.sethp = function(newhp) {
if (newhp < maxhp){
hp = newhp;
} else {
hp = maxhp;
}
}
self.gethp = function(){
return hp;
}
return self;
}
var m1 = mariner.new();
m1.sethp(100);
m1.heal(13);
alert(m1.gethp());
(shamelessly stolen from http://lua-users.org/wiki/ObjectOrientationClosureApproach)That has a pretty simple answer, it's because it was the only language available in the browser (and no, Java applets never really took off).
Had it been Ruby (unlikely given the timeline) or Python or even Perl instead, the situation would probably be much better today.
By the time it happens, it won't actually mean anything because something else, something equally despised and impure will have taken its place.
Perhaps a better question might be why are such languages more popular than their more ideologically pure cousins? What need are they filling that "better" languages cannot? Be careful if your answer is "they're beginner's tools for mediocre programmers" -- the JS community is home to some extremely talented programmers who are all there by choice alone.