- No conventions.
- Not standardized.
- No consistency in online resources.
- Lots of outdated online resources.
- No first class Enums
- No types. Can be handled by Flow or TypeScript
- Callback hell (work around with Promises,
await, but its not supported everywhere)
- Like wtf?
- 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.
babelflags can make your code run differently
- Requires high code coverage to ensure it does as expected.
- You need tools like
lodashfor basic stuff (bucketing items in in an array,
- Was design for client side browsing, not server side
- It has both
- No native
- 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.
- jshint http://jshint.com/about/
- 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
- Module systems
- Inconsistent environments
- Browser development, so many browser versions
- Node, webpack vs everything else
Array.flat only works in Node.js 11+
Array.values() is different from Object.values()
Object.values(object) returns an array of values
array.values() returns an iterator