A review by tcheang
Eloquent JavaScript: A Modern Introduction to Programming by Marijn Haverbeke

4.0

The books straddles the middle-ground between practicality and computer science theory; not quite how-to-react-redux-node-express and not quite big-O, graphs, trees, automata, etc. Perhaps this actually allows for a timeless introduction to JavaScript.

It's insufficient on its own for first-time learners (not enough exercises), but it was perfect for me as an overview of a variety of coding concepts (e.g. higher-order functions, async functions and promises, the motivation behind modern web programming). The examples aren't always easy to follow, but the interactivity of most of the book (save the node.js portions toward the end) within the browser allows for immediate exploration of questions that might come up. I found that having one or two other languages as a reference helped contextualize the material, but it may not be necessary to go through the book. Since it's free, I recommend it at least as a reference, even if you don't read it cover-to-cover.