33 JavaScript Concepts Every Developer Should Know

How much of JavaScript do you really think you know? You probably know how to write functions, understand simple algorithms, and can even write a class. But do you know what a typed array is?
You don’t need to know all of these concepts right now, but you will eventually need them later in your career. That’s why I recommend bookmarking this list, because chances are, you’ll encounter one of these topics, and then you’re gonna want a tutorial to fully understand it.
1. Call Stack

A call stack is a mechanism for an interpreter (like the JavaScript interpreter in a web browser) to keep track of its place in a script that calls multiple functions — what function is currently being run and what functions are called from within that function, etc.
—Source
Tutorials
- 📜 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
2. Primitive Types

All types except objects define immutable values (that is, values which can’t be changed). For example (and unlike in C), Strings are immutable. We refer to values of these types as “primitive values”.
—Source
Tutorials
- 📜 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
3. Value Types and Reference Types

Variables that are assigned a non-primitive value are given a reference to that value. That reference points to the object’s location in memory. The variables don’t actually contain the value.
—Source
Tutorials
- 📜 Explaining Value vs. Reference in Javascript — Arnav Aggarwal
- 📜 Primitive Types & Reference Types in JavaScript — Bran van der Meer
- 📜 Value Types, Reference Types and Scope in JavaScript — Ben Aston
4. Implicit, Explicit, Nominal, Structuring and Duck Typing

Type coercion means that when the operands of an operator are different types, one of them will be converted to an “equivalent” value of the other operand’s type.
—Source
Tutorials
- 📜 What you need to know about Javascript’s Implicit Coercion — Promise Tochi
- 📜 JavaScript Type Coercion Explained — Alexey Samoshkin
- 📜 Javascript Coercion Explained — Ben Garrison
5. == vs === vs typeof

JavaScript has two visually similar, yet very different, ways to test equality. You can test equality with == or ===.
—Source
Tutorials
- 📜 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
6. Function Scope, Block Scope and Lexical Scope

It is important to make this distinction because expressions can act like statements, which is why we also have Expression statements. Though, on other the hand, statements cannot act like expressions.
—Source
Tutorials
- 📜 JavaScript Functions—Understanding The Basics — Brandon Morelli
- 📜 The battle between Function Scope and Block Scope — Marius Herring
- 📜 Emulating Block Scope in JavaScript — Josh Clanton
7. Expression vs Statement

It is important to make this distinction because expressions can act like statements, which is why we also have Expression statements. Though, on other the hand, statements cannot act like expressions.
—Source
Tutorials
- 📜 All you need to know about Javascript’s Expressions, Statements and Expression Statements — Promise Tochi
- 📜 Function Expressions vs Function Declarations — Paul Wilkins
- 📜 JavaScript Function — Declaration vs Expression — Ravi Roshan
8. IIFE, Modules and Namespaces

One of the often used coding patterns with functions has got a fancy name for itself: Immediately-invoked Function Expression. Or more dearly known as IIFE and pronounced as “iffy.”
—Source
Tutorials
- 📜 Mastering Immediately-Invoked Function Expressions ― Chandra Gundamaraju
- 📜 Do ES6 Modules make the case of IIFEs obsolete?
- 📜 A 10 minute primer to JavaScript modules, module formats, module loaders and module bundlers ― Jurgen Van de Moere
9. Message Queue and Event Loop
GIF
“How is JavaScript asynchronous and single-threaded ?” The short answer is that JavaScript language is single-threaded and the asynchronous behaviour is not part of the JavaScript language itself, rather they are built on top of the core JavaScript language in the browser (or the programming environment) and accessed through the browser APIs.
—Source
Tutorials
- 📜 JavaScript Event Loop Explained — Anoop Raveendran
- 📜 The JavaScript Event Loop: Explained — Erin Sweson-Healey
- 📜 Understanding JS: The Event Loop — Alexander Kondov
10. setTimeout, setInterval and requestAnimationFrame

We may decide to execute a function not right now, but at a certain time later. That’s called “scheduling a call”.
—Source
Tutorials
- 📜 setTimeout and setInterval — JavaScript.Info
- 📜 Why not to use setInterval — Akanksha Sharma
- 📜 setTimeout VS setInterval — Develoger