<img src="https://i.imgur.com/dsHmk6H.jpg" alt="33 Concepts Every JS Developer Should Know" width=200">
33 Concepts Every JavaScript Developer Should Know
Introduction
This repository was created with the intention of helping developers master their concepts in JavaScript. It is not a requirement, but a guide for future studies. It is based on an article written by Stephen Curtis and you can read it here.
? Considered by GitHub as one of the top open source projects of 2018!
Community
Feel free to submit a PR adding a link to your own recaps or reviews. If you want to translate the repo into your native language, please feel free to do so.
All the translations for this repo will be listed below:
- Arabic — Amr Elsekilly
- Chinese — Re Tian
- Portuguese-BR — Tiago Boeing
- Korean — Suin Lee
- Spanish — Adonis Mendoza
- Turkish — İlker Demir
- Russian — Mihail Gumennii
- Tiếng Việt — Nguyễn Trần Chung
- Polish — Dawid Lipinski
- Persian — Majid Alavizadeh
- Indonesian — Rijdzuan Sampoerna
- French — Robin Métral
- Hindi — Vikas Chauhan
- Greek — Dimitris Zarachanis
- Japanese — oimo23
- German — burhannn
- Ukrainian — Andrew Savetchuk
- Sinhala — Udaya Shamendra
- Italian - Gianluca Fiore
Table of Contents
- Call Stack
- Primitive Types
- Value Types and Reference Types
- Implicit, Explicit, Nominal, Structuring and Duck Typing
- == vs === vs typeof
- Function Scope, Block Scope and Lexical Scope
- Expression vs Statement
- IIFE, Modules and Namespaces
- Message Queue and Event Loop
- setTimeout, setInterval and requestAnimationFrame
- JavaScript Engines
- Bitwise Operators, Type Arrays and Array Buffers
- DOM and Layout Trees
- Factories and Classes
- this, call, apply and bind
- new, Constructor, instanceof and Instances
- Prototype Inheritance and Prototype Chain
- Object.create and Object.assign
- map, reduce, filter
- Pure Functions, Side Effects and State Mutation
- Closures
- High Order Functions
- Recursion
- Collections and Generators
- Promises
- async/await
- Data Structures
- Expensive Operation and Big O Notation
- Algorithms
- Inheritance, Polymorphism and Code Reuse
- Design Patterns
- Partial Applications, Currying, Compose and Pipe
- Clean Code
1. Call Stack
Articles
- ? Understanding Javascript Call Stack, Event Loops — Gaurav Pandvia
- ? Understanding the JavaScript Call Stack — Charles Freeborn
- ? Javascript: What Is The Execution Context? What Is The Call Stack? — Valentino Gagliardi
- ? What is the JS Event Loop and Call Stack? — Jess Telford
- ? Call Stack — MDN
- ? Understanding Execution Context and Execution Stack in Javascript — Sukhjinder Arora
- ? How JavaScript Works: An Overview of the Engine, the Runtime, and the Call Stack — Alexander Zlatkov
- ? The Ultimate Guide to Execution Contexts, Hoisting, Scopes, and Closures in JavaScript — Tyler McGinnis
Videos
- ? Javascript: the Call Stack explained — Coding Blocks India
- ? The JS Call Stack Explained In 9 Minutes — Colt Steele
- ? JavaScript Execution Stack — Codecademy
- ? What is the Call Stack? — Eric Traub
- ? The Call Stack — Kevin Drumm
- ? Understanding JavaScript Execution — Codesmith
- ? Call Stack & Event Loop — movies com
- ? The Ultimate Guide to Execution Contexts, Hoisting, Scopes, and Closures in JavaScript — Tyler McGinnis
- ? What the heck is the event loop anyway? — Philip Roberts
- ? La PILA DE EJECUCIÓN (Call Stack) de JavaScript — La Cocina del Código
2. Primitive Types
Articles
- ? How numbers are encoded in JavaScript — Dr. Axel Rauschmayer
- ? What You Need to Know About JavaScript Number Type — Max Wizard K
- ? What Every JavaScript Developer Should Know About Floating Point Numbers — Chewxy
- ? The Secret Life of JavaScript Primitives — Angus Croll
- ? Primitive Types — Flow
- ? (Not) Everything in JavaScript is an Object — Daniel Li
- ? JavaScript data types and data structures — MDN
- ? Diving Deeper in JavaScripts Objects — Arfat Salman
- ? The differences between Object.freeze() vs Const in JavaScript — Bolaji Ayodeji
Videos
- ? JavaScript Reference vs Primitive Types — Academind
- ? JavaScript Primitive Types — Simon Sez IT
- ? Value Types and Reference Types in JavaScript — Programming with Mosh
- ? JavaScript Primitive Data Types — Avelx
- ? Everything you never wanted to know about JavaScript numbers — Bartek Szopka
- ? What are variables in Javascript? — JS For Everyone
- ? TIPOS DE DATOS PRIMITIVOS en JAVASCRIPT - La Cocina del Código
3. Value Types and Reference Types
Articles
- ? Explaining Value vs. Reference in Javascript — Arnav Aggarwal
- ? Understand Value and Reference Types in JavaScript — Zsolt Nagy
- ? Primitive Types & Reference Types in JavaScript — Bran van der Meer
- ? Value Types, Reference Types and Scope in JavaScript — Ben Aston
- ? Back to roots: JavaScript Value vs Reference — Miro Koczka
- ? Grasp “By Value” and “By Reference” in JavaScript — Léna Faure
- ? JavaScript Reference and Copy Variables — Vítor Capretz
- ? JavaScript Primitive vs Reference Values
- ? JavaScript by Reference vs. by Value — nrabinowitz
- ? JavaScript Interview Prep: Primitive vs. Reference Types — Mike Cronin
Videos
- ? Javascript Pass by Value vs Pass by Reference — techsith
- ? JavaScript Value vs Reference Types — Programming with Mosh
- ? VALORES vs REFERENCIAS en JAVASCRIPT - La Cocina del Código
4. Implicit, Explicit, Nominal, Structuring and Duck Typing
Articles
- ? What you need to know about Javascript's Implicit Coercion — Promise Tochi
- ? JavaScript Type Coercion Explained — Alexey Samoshkin
- ? Javascript Coercion Explained — Ben Garrison
- ? What exactly is Type Coercion in Javascript? - Stack Overflow
- ? You Don't Know JS: Types & Grammar [Book] — Kyle Simpson
- ? Type Coercion in JavaScript, and why everyone gets it wrong.
Videos
- ? == ? === ??? ...#@^% - Shirmung Bielefeld
- ? Coercion in Javascript - Hitesh Choudhary
- ? JavaScript Questions: What is Coercion? - Steven Hancock
- ? Typing: Static vs Dynamic, Weak vs. Strong - Codexpanse
- ? EL SISTEMA de TIPOS DE JAVASCRIPT - La Cocina del Código
5. == vs === vs typeof
Articles
- ? JavaScript Double Equals vs. Triple Equals — Brandon Morelli
- ? Should I use === or == equality comparison operator in JavaScript? — Panu Pitkamaki
- ? == vs === JavaScript: Double Equals and Coercion — AJ Meyghani
- ? Why Use the Triple-Equals Operator in JavaScript? — Louis Lazaris
- ? What is the difference between == and === in JavaScript? — Craig Buckler
- ? Why javascript's typeof always return "object"? — Stack Overflow
- ? Checking Types in Javascript — Toby Ho
- ? How to better check data types in JavaScript — Webbjocke
- ? Checking for the Absence of a Value in JavaScript — Tomer Aberbach
Videos
6. Function Scope, Block Scope and Lexical Scope
Articles
- ? You Don't Know JS: Scope & Closures [Book] — Kyle Simpson
- ? JavaScript Functions — Understanding The Basics — Brandon Morelli
- ? The battle between Function Scope and Block Scope — Marius Herring
- ? Emulating Block Scope in JavaScript — Josh Clanton
- ? The Difference Between Function and Block Scope in JavaScript — Joseph Cardillo
- ? Function Scopes and Block Scopes in JavaScript — Samer Buna
- ? [Understanding Scope and Context in JavaScript