Every so often I get asked how to go about learning JavaScript. There are so many ways to learn that it can be overwhelming. I’ve narrowed it down to a few resources that have really helped me understand JS from the ground up. This isn’t really structured like a course — if you’re looking for something like that, there are plenty of courses out there. These are just a few resources that have helped me.
Just JavaScript
This course from Dan Abramov, the creator of React, focuses on building (or establishing) the mental models that are necessary when working with JS. The animations and minigames courtesy of Maggie Appleton are extraordinary. It’s absurdly affordable and you have it for life.
JS Visualizer 9000
When I really dug into JS, I realized I needed to learn not just the language and syntax but how JS is evaluated in the browser. When I learned about the call stack, the task queue, and the event loop, it took me to the next level. I originally drew it out by hand, but this app created by Andrew Dillon is absolutely incredible.
domevents.dev
If you don’t understand how DOM events are dispatched, the bubble phase vs the capture phase, event listeners, event targets, etc., it will be very frustrating trying to write any JS for the web. This wonderful tool allows you to visualize what happens when an event is dispatched.
Go Make Things: Event Delegation
This isn’t strictly necessary but at some point as a developer you need to start thinking about performance. This is an introduction to a powerful technique that will help you get thinking about performance in a practical way. Chris’s blog is just a great resource in general.
You Don’t Know JS (Yet)
A little over a decade ago, Kyle Simpson took the time to write some incredible books about JS. Start with the revised edition of the first book called (appropriately) Get Started. You can read it for free on GitHub, or you can buy the ebook/PDF or a physical copy. Reading these books helped me understand how JS got to where it is today and how to build resilient JS programs.
I’ll add more to this list as I think of things that have helped me.