| > Maybe you shouldn't be so quick to jump to this conclusion that any criticism of your pet technology comes from a place of ignorance or pretension. Maybe your argument just isn't that great? I mean - look, I've worked in a LOT of languages now in the 25 years I've been writing code. Js is certainly no bastion of language perfection, but it's also sure as fuck not on shaky foundations. Almost all of your criticism basically boil down to: JS won't break backwards compatibility for me! WAHHHHH! Because none of your examples are really issues: - Implicit type coercion. happens in a lot of languages - keep a table around if you need it. - Confusing scope binding, i.e., `this`, `bind`, etc. this is literally core to the language - it's not any more confusing than learning about the difference between class definition vs an object instance. - Inconsistent Array API — some methods return a new value; some methods mutate the value![0]. This is a fair complaint - but all the functions that mutate have non-mutating versions now - JS just won't break compatibility for you by removing the old ones... "WAH!") - `['1', '7', '11'].map(parseInt)` …lol?! You know damn well what you're doing Mr radix. Variadic languages have some edge cases. If you don't like it, use Number like a sane person: ['1', '7', '11'].map(Number) ParseInt is usually not what you want, but again... JS won't break compatibility for you - that doesn't mean the foundation is shaky... It just means that some parts are older than others. |