- Basic syntax & comments
- Declarations
- Variable scope
- Variable hoisting
- Data structures and types (primitives)
- Literals
- Destructuring assignment syntax
if...else
switch
try
/catch
/throw
- Error objects
for
while
do...while
break
/continue
for..in
for..of
- Defining functions
- Calling functions
- Function scope
- Arguments & parameters
this
binding- 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
Number
objectMath
objectDate
object
push
pop
shift
unshift
- spread (
...
) syntax
map
filter
reduce
- Method chaining
- Typed arrays
Map
Set
WeakMap
WeakSet
- Objects and properties
- Creating objects
- Defining methods
- Getter and setter
- Prototype-based OOP
- Creating object hierarchies
- Inheritance (
prototype
)
constructor
extends
super
static
- 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