Enjoy:
- record and array literals
- arrow syntax for lambdas
- spread operator
- map, reduce, forEach
- string template literals
- default values with ||
- single thread memory model
- all the pretty colours
Avoid:
- Formal OO constructs, i.e. 'class' and whatever goes on inside it. They feel out of place, and e.g. the this.function() syntax is clanky. Special hate reserved for those magic proxy getters - breaks the simple record model.
- Formal typing, i.e. Typescript. Becomes unnecessarily verbose and boilerplated, tooling is not quite there, and you almost always need to poke holes in the type system to do anything interesting anyway.
- Lodash and friends. Not needed now the core language has so much out the box.
Where Javascript seems to shine is in being a simple, functional language, with concise syntax, and without heavy OO or type formalisms.