3 ms·
Most of the stupid ideas like semicolon insertion are not major deal breakers [1]. Yes, they are annoying, but nothing that can't be fixed with a lint program.
by spion 14y ago
Most of the stupid ideas like semicolon insertion are not major deal breakers [1]. Yes, they are annoying, but nothing that can't be fixed with a lint program. You can treat your lint program as a stricter replacement for a syntax error checker.
Class-based OO is implementable with prototype-based OO (with some exceptions such as "protected" which are mostly unnecessary when first class functions are available). In practice, this means you need to learn how to use it (unfortunately the quirky way its implemented in JS doesn't help this at all)
CommonJS provides quite excellent namespacing and modularity - its only a hack because it doesn't work in browsers [2]
The standard library is admittedly lacking but there are many libraries that cover this gap, some of them being de facto standard.
Development environment support is pretty good for a dynamic language, with multiple IDEs doing some form of static analysis and completion
Debugging is pretty good, with modern browsers supporting breakpoints, watch expressions, live code editing, logging with object inspection etc. For node you have the v8 debugger and node-inspector providing pretty much the same.
There are far more pressing issues with JS than the ones you mentioned, like the verbose function syntax (mostly fixed in Harmony), lack of coroutines (mostly fixed with Harmony generators), lack of something like ruby's method_missing or python's __getattr__ (fixed with Harmony proxies)...
[1]: an example of a major deal breaker is not having first class functions
[2]: actually, it kind-of does - https://github.com/substack/node-browserify https://github.com/substack/node-browserify https://github.com/azer/onejs https://github.com/azer/onejs etc.