- Basic syntax & comments
- Declarations
- Variable scope
- Variable hoisting
- Data structures and types (primitives)
- Literals
- Destructuring assignment syntax
if...elseswitchtry/catch/throw- Error objects
forwhiledo...whilebreak/continuefor..in
for..of
- Defining functions
- Calling functions
- Function scope
- Arguments & parameters
thisbinding- Arrow functions
- Closures
- spread (
...) syntax - Named arguments
- Higher order functions
- Function composition
- Point free style
- Currying
- Assignment & Comparisons (
=,==,===,!=,!==,<,>,<=,>=) - Arithmetic operators (
%,++,--,-,+)
- Logical operators (
&&,||,!)
- Bitwise operators (
&,|,^,~,<<,>>,>>>)
- Number literals
NumberobjectMathobjectDateobject
pushpop
shiftunshift- spread (
...) syntax
mapfilterreduce- Method chaining
- Typed arrays
MapSet
WeakMapWeakSet
- Objects and properties
- Creating objects
- Defining methods
- Getter and setter
- Prototype-based OOP
- Creating object hierarchies
- Inheritance (
prototype)
constructorextendssuperstatic
- Guarantees
- Chaining
- Error propagation
- Execution order, event loop
- Composition (
Promise.all,Promise.race) async/await
- Exporting
- Importing
- Default exports
- Renaming features
- Aggregating modules
- Dynamic module loading
- Iterators
- Iterables
- Generators
Proxy
- Handlers and traps
- Revocable Proxy
Reflect