Modern JavaScript
A guide to help you learn Modern JavaScript
- The beginning
- The concepts
- JavaScript key concepts & syntax
- Running JavaScript
- The
var
&function
keywords, scope, hoisting andundefined
- First class functions: Function declarations, function expressions, hoisting &
undefined
- Working with text:
'
and"
; plus template literals with backticks`
and${}
- Equality symbols
==
,!=
,===
and!==
- Debugging, documenting & logging JavaScript
- Validating and error handling in JavaScript
- Namespaces and block scoping, the problem
- Immediately-invoked function expressions (IIFE): Namespaces and block scoping solved, the early years
- Object assignments and object notation: Namespaces solved another way, the early years
- Lexical scope and the
this
execution context - Closures: Functions that remember their lexical scope
- The
let
andconst
keywords: Block scoping solved, the modern years; plus saner access, defaults & temporal dead zones (TDZ) for variables - The
export
&import
keywords and modules: Namespaces solved, the modern years - Pre-ES6 (ES2015) modules detour: CommonJS, AMD and UMD
- Arrow functions with
=>
- The
void
keyword - Function parameter default values
- Generators: Functions with
*
and theyield
keyword - The spread/rest
...
operator - The exponentiation operator
**
- Asynchronous functions with
async
andawait
- Numeric separators with the underscore
_
character
- JavaScript key concepts & syntax
- JavaScript data types
- Dynamically typed behavior and data types
- Primitive data types
- The
string
primitive data type andString
object data type - The
number
primitive data type,Number
object data type and their limits - The
boolean
primitive data type andBoolean
object data type - The
symbol
primitive data type andSymbol
object data type - The
bigint
primitive data type andBigInt
object data type - The
null
andundefined
primitive data types - Object data types
- The immutability of primitives and mutablity of objects
- The
Object
data type - The global object detour: A top level
Object
object available in all JavaScript environments - The
Map
andWeakMap
data types - The
Set
andWeakSet
data types - The
Proxy
andReflect
data types
- JavaScript object-orientated and prototype-based programming
- Prototype-based programming and the
prototype
property - Prototype-based programming and the prototype chain
- Prototype-based programming constructors & static properties, the early years
- Prototype-based programming constructors and inheritance, the early years
- To
new
or not tonew
- Prototype-based getters and setters with
get
andset
keywords & property descriptors - JavaScript OOP keywords:
class
,constructor
,extends
,super
,get
,set
andstatic
, the modern years
- Prototype-based programming and the
- JavaScript for loops
- The
for
statement: Explicit counters, iterations and step sizes, the early years - The
break
andcontinue
statements: Exiting for loops and iterations prematurely - Label statements in
for
loops: GoTo a specific point in the workflow - The
while
anddo while
statements: Loops that run with one expression - The
for in
statement: A loop for key-value data structures, the early years - The
Array
data type baked-in for loops, methods with callbacks:every()
,filter()
,forEach()
,map()
,reduce()
&reduceRight()
- The
Map
data type &Set
data type baked-in for loopforEach()
method with callback - The
for of
statement: Iterable and iterator protocols - Iterable objects and the
next()
method: Behind the scenes of thefor of
statement & manually advancing over iterables - Generators and yield expressions
- The
- JavaScript asynchronous and parallel execution
- Node JS
- How Node JS compares to JavaScript browser engines and other programming language run-time environments
- Node JS - Installation and versioning
- The Node version manager
nvm
(Optional) - The Node JS
node
command - Node JS - A JavaScript CommonJS based system
- Node JS - Built-in JavaScript modules
- The Node JS
dns
module: DNS (Domain Name System) operations with JavaScript - The Node JS
fs
module: Read and write files with JavaScript - Node JS & the JavaScript asynchronous/callback approach & event loop design
- Npm
- Deno
- TypeScript: The JavaScript that should have been
- WebAssembly: The web's JavaScript liberator
- JavaScript's performance crux: An interpreted language
- Getting to machine language from other languages: Interpreted, compiled, assembly, higher level, mid level, system level and low level
- WebAssembly precursors : Browser add-ons/plug-ins, JavaScript asm.js and transpilers for low level languages
- WebAssembly: Lessons learned from JavaScript, browsers, add-ons/plug-ins, low level languages and transpilers
- WebAssembly: The future of the web
- Rust