Learn JavaScript Essentials
(for all skill levels)
by Eric Elliott
One Clear Path
Last updated: March 2020
There are so many JavaScript resources available out there, it’s hard to understand how much of it overlaps and how much is redundant. Not to mention the process of weeding out bad information. Most JavaScript learning resources neglect two of the most important topics in JavaScript: prototypal inheritance and functional programming.
There are many possible paths, several good paths, but few great paths.
Here is one clear path to JavaScript mastery:
Why JavaScript?
JavaScript is the standard language of the web platform. Learning it will allow you to build any app you want for any device or platform you want. Watch this 1 minute video to learn more about what JavaScript can do for you:
The essentials, in order:
- Newbie & kid friendly: Make a Star Wars Game with Hour of Code (free website)
- Newbie & kid friendly: “JavaScript for Cats”, Max Ogden (free website)
- Newbie friendly: “A Functional Programmer’s Introduction to JavaScript”. Learn current JavaScript syntax basics.
- Newbie friendly: FreeCodeCamp’s Basic JavaScript track You can come back to FCC for more practice while you explore the rest of these resources.
- Newbie friendly: “Pure Functions” lesson on EricElliottJS.com (that’s me).
- “Composing Software” by Eric Elliott
- “Eloquent JavaScript: Third Edition”, Marijn Haverbeke (book with free online edition available)
- “Learn JavaScript with Eric Elliott”
On JavaScript Modules
The largest package repository in the world (for any programming language) is npm. It’s the package manager that comes with Node.js, but it’s also widely used for client-side modules using solutions like Webpack.
ES6+ is the current standard, and you can use ES6 module syntax in browsers with npm + Webpack. My current recommendation for production is to use ES6 module syntax — both in Node and in the browser.
Favor Object Composition Over Class Inheritance
Most JS books will teach you how to implement classical inheritance in JavaScript. Watch this video to learn why classical inheritance should be avoided in JavaScript, and how to put prototypal inheritance to work for you:
Extra credit: