No consistency in online resources.
Lots of outdated online resources.
No first class Enums
Callback hell (work around with Promises,
await, but its not supported everywhere)
All the problems of a loosely typed language.
Hard to scale as a language, due to no types.
Hard to refactor.
Inconsistencies in coding style amongst the community
JS Modules are confusing
Requires high code coverage due to inconsistencies.
babel flags can make your code run differently
Requires high code coverage to ensure it does as expected.
You need tools like
lodash for basic stuff (bucketing items in in an array,
Was design for client side browsing, not server side
It has both
Browser support is inconsistent.
I ran into a problem with fetch() not being supported. https://github.com/github/fetch#browser-support
Requires a lot of static analysis tools.
See Node.js's creator Ryan Dahl's "10 Things I Regret About Node.js"
What does this return?
"some string".match(/some regex/)
It's an Array with properties of
Requiring the use of new features via Babel
Requiring WebPack to bundle for frontend
Browser development, so many browser versions
Node, webpack vs everything else
Array.flat only works in Node.js 11+
Object.values(object) returns an array of values
array.values() returns an iterator
new Set(['a', 'b']) == new Set(['b', 'a']); // false