Whether you are learning JS from scratch or have been working with it for a while now, I believe you will find great value on the following list of books.
I have read lots of them and some are still in my backlog but every-time I learned something new out of them.
Here is the list:
I am not planning to share links to any book seller, use what works best for you. There are a couple of options I have used successfully in the past: 1) Buy on Amazon, 2) O'Reilly media, 3) Ask a friend!
- Head First: javascript Programming by Eric Freeman & Elisabeth Robson. If you never read any Head First book, you will find these books easy to read, full of examples and simplifications that help you learn the basics without feeling overwhelm by technical terms and engineering jargon.
- JavaScript: The Good Parts by Douglas Crockford. This book is a must, you will learn all the language basics along with best practices. JS is an open language and loosely typed which fosters a lot of what are considered bad practices. It is good to learn about those bad practices to avoid them and this book delivers on that.
- Javascript: The Definite Guide, 6th Edition by David Flanagan. This is a great reference book. It has more than 1000 pages, so don’t be crazy and try to read it from start to finish (I have done that). I would recommend to scan trough this book and use it as a reference along your journey.
- Eloquent Javascript: An opinionated guide to programming by Marijin Haverbeke. If you want to go more technical and learn more details about the language check out this book. It is a compact version, only around 200 pages, but goes into detail.
- Understanding ECMAScript 6: The Definite guide for Javascript Developers by Nicholas C. Zakas. You might have heard about ECMAScript 6 (a.k.a ES6). ECMAScript is the standard on which languages like JS are developed. This standard dictates which features will be implemented, and the latest one released is ES6. Most tutorials and rendering frameworks will leverage concepts from ES6 (classes, arrow functions, destructuring, template literals, generators, etc). So it is good to have this book as reference.
Design patterns are well thought out solutions for common problems. Learning patterns will help you to write better code but keep in mind that a lot of these concepts will take time to master.
It took me years to properly understand a lot of these patterns and every day I learn how to use them better. But once you have them in your toolbox, they are great ways of structuring code.
- Learning Javascript Design Patterns by Addy Osmani. From the GOF classic patterns to specific patterns for Javascript, this book illustrates with examples how to apply different solutions for different problems. NOTE: there is a whole section on patterns with Jquery that you might not find necessary applying these days, but it is still useful to go through it and see practical applications.
- Mastering Javascript Design Patterns by Simon Tins . A lot of similarities to Addi Osmani’s book, but with slightly different examples. Also it includes some other interesting sections like testing patterns, functional patterns, dependency injection and more that are worth checking out. Even if they are similar I found myself reading both books and I revisit them every now and then.
- Javascript Patterns by Stoyan Sefanov. Again some duplication with the previous 2 books I recommended, but also some unique content, specially around DOM and Browser patterns.
There are some books I’ve been wanting to read for a while but I haven’t had the chance yet.
- Data Structures & Algorithms in Javascript by Adrian Mejia. I’ve been looking for books on data structures for JS and this book promises to deliver on that. From algorithm analysis (Big O Notation) to linear (array, linked list, stack, queue, etc) and non-linear structures (Hash Maps, Sets, Graphs, Trees, etc).
- Axel Rauschmayer has tons of books on JS. A modern take on all the classics I have recommended. A lot of those can be read online.
I know there is a lot to read and there is never enough time but I think it’s worth to spend some time on these books. Personally I’ve read all of them and found a lot of benefits on it. They have helped me learn and understand the basics, follow best practices and made me a better engineer.
I use 2 strategies:
- Read the full book and take notes when I have time. Notes are a great way to quickly see what was interesting about the book and refresh concepts quickly. Even just highlighting sections helps!
- Scan the book, read trough the parts I need for a particular project or just the ones I’m feeling more intrigued about at the moment.
Enjoy!!!
@juan_allo