# Awesome JavaScript Learning

> An awesome list limited to the best JavaScript learning resources

This list is mainly about JavaScript - the language. Not about APIs, tooling, frameworks or other aspects of todays JavaScript ecosystem.

Please read the contribution guidelines before contributing.

## Contents

- JavaScript References
- Articles & Tutorials
- Free eBooks
- Books
- Blogs
- Videos
- Interactive learning
- ES6 and above
- DOM related
- Node.js
- Related

## JavaScript References

- MDN - Simply the most extensive and up to date language reference.
- DevDocs - Search MDN comfortably. Even offline.
- JavaScript Notes & Reference - Detailed reference with code examples. Divided into topics covering basic and advanced subjects.
- Simplified JavaScript Jargon - Glossary which explains all the buzzwords from the JavaScript eco system.
- Functional Programming Jargon - Explains terms used in functional programming in the JavaScript context.
- ECMAScript® Language Specification - The standard JavaScript is based on. Only for very advanced learners.

## Articles & Tutorials

### Overall Topics

- A re-introduction to JavaScript* - Compact introduction covering types, variables, operators, control structures, functions and closures.
- JavaScript.info - A modern tutorial from the basics to advanced topics with simple, but detailed explanations.
- Glossary of Modern JavaScript Concepts: Part 1 - Learn the fundamentals of functional programming, reactive programming, and functional reactive programming in JavaScript.
- Glossary of Modern JavaScript Concepts: Part 2 - Explains concepts like scope and closures, data flow, change detection, components, compilation, tree shaking.
- Robust Client-Side JavaScript - Guide focused on writing robust code by describing possible failures and explaining how to prevent them.

*MDN offers a lot of other guides for every level of knowledge to dig deeper.

### Single Topics

- JavaScript Closures Demystified - Covering closures. From basics to use cases. Has useful comments.
- Understanding Hoisting - Detailed explanation of the concept of hoisting in JavaScript.
- Array operations - Covering the usefulness of Array’s map, reduce, and filter methods.
- Promises - Learning promises step by step.
- Async/Await - Tutorial showing the advantages of consuming Promises via async functions.
- Pure functions - Answers the question »What is a Pure Function?« epicly.
- Using Fetch - Describes thoroughly how to use the Fetch API to receive and send data.
- Chrome DevTools - Everything you need to know about the debugging tools built into Google Chrome.

## Free eBooks

- Eloquent JavaScript - Covering the language and runtime specifics.
- You Don’t Know JS (book series) - Series of books diving deep into language.
- Speaking JavaScript - In-depth guide beginning with the basics.
- JavaScript Design Patterns - Classical and JavaScript specific design patterns.
- Mostly Adequate Guide to Functional Programming - Excellent primer to functional programming using JavaScript.
- Functional-Light JavaScript - This book explores the core principles of functional programming (FP) as they are applied to JavaScript.

## Books

Thin books which you can get through in a few days.

- JavaScript: The Good Parts - Classic material which still has relevance.
- The Principles of Object-Oriented JavaScript - Comprehensible, especially interesting for people with a class based OOP background.
- JavaScript Enlightenment - Will solidify your understanding of the language.
- Testing JavaScript Applications - A complete guide for JavaScript testing tools and techniques.
- The Joy of JavaScript - A book covering advanced language features like Iterators and Generators.

## Blogs

- ②ality - Language features and APIs well explained by author and trainer Dr. Axel Rauschmayer.
- Pony Foo - Detailed and high quality posts from Nicolás Bevacqua all related to JavaScript.

## Videos

- == ? === ??? …#@^% - Basic talk about type coercion and strict type comparison.
- FunFunFunction - Educational plus entertaining YouTube show covering language features as well as architectural topics amongst others.
- What the heck is the event loop anyway? - Awesome talk about the way JavaScript works, and a tool for exploring the callstack.
- Become a JavaScript Console Power-User - Introduction to the browsers JavaScript console.
- Debugging The Web - Learn state of the art in debugging using Chrome dev tools.
- Promises Are So Passé - Talk that shows where async goes next, why it matters, and what you need to do to put it into practice today.
- Learning Functional Programming with JavaScript - Talk containing the best explanation of map/reduce.
- Understand JavaScript’s this Keyword in Depth - 18 minutes divided into 8 short videos to wrap you head around `this`.

## Interactive learning

- Udacity Introduction to JavaScript - They also offer more advanced courses.
- Code School - From Basics to Best Practices. Different courses related to JavaScript.
- Functional programming - Learn basic principles of functional programming in an interactive way by using map, filter, concatAll, reduce and zip.
- JavaScript30 - Video course with 30 small and self-contained tutorials to build neat little things with plain JavaScript.
- Learn JavaScript Online - Interactive JavaScript course with spaced repetiton flashcards app.
- Exercism JavaScript Track - Exercism provides individual practice and mentor-based learning for free.

## ES6 and above

- Exploring ES6 - Good introduction with in-depth chapters.
- Exploring ES2016 and ES2017 - Follow up of »Exploring ES6«.
- ES6 Overview - Bullet point overview including in-depth articles.
- ES6 Katas - Learn ES6 by solving unit test online.
- Practical ES6 - eBook with practical examples and advices.
- 30 seconds of code - Useful ES6 snippets that you can understand in 30 seconds or less.
- What’s the difference between JavaScript and ECMAScript? - Clears the confusion about ES6 and JavaScript.

## DOM related

- DOM Enlightenment - A whole book about how to access and manipulate the DOM without a library.
- You Might Not Need jQuery - Get plain JavaScript code snippets (and see their jQuery equivalents).
- Traversing the DOM with JavaScript - A tutorial featuring native methods to traverse the DOM.

## Node.js

- The Art of Node - Introductory tutorial covering the basics.
- NodeSchool - Interactive self guided workshops you can also do on your own.
- Node Patterns - Short books about code and networking patterns related to Node.js.
- Learn Node - A premium training course to learn to build apps with Node.js, Express, MongoDB.

## Related

Awesome CSS Learning - An awesome list limited to the best CSS learning resources.

javascriptlearning.md Github