The Modern JavaScript Tutorial Syllabus
The Modern JavaScript Tutorial Syllabus
info/
Here we learn JavaScript, starting from scratch and go on to advanced concepts like OOP.
We concentrate on the language itself here, with the minimum of environment-specific notes.
An introduction
JavaScript Fundamentals
2.1 Hello, world! 2.7 Type Conversions 2.13 Loops: while and for
2.2 Code structure 2.8 Basic operators, maths 2.14 The "switch" statement
2.3 The modern mode, "use strict" 2.9 Comparisons 2.15 Functions
2.4 Variables 2.10 Conditional branching: if, '?' 2.16 Function expressions
2.5 Data types 2.11 Logical operators 2.17 Arrow functions, the basics
2.6 Interaction: alert, prompt, confirm 2.12 Nullish coalescing operator '??' 2.18 JavaScript specials
Code quality
3.1 Debugging in the browser 3.3 Comments 3.5 Automated testing with Mocha
3.2 Coding Style 3.4 Ninja code 3.6 Polyfills and transpilers
1 of 6 08/06/2024, 3:10 PM
Firefox https://javascript.info/
Data types
5.1 Methods of primitives 5.5 Array methods 5.9 Object.keys, values, entries
5.2 Numbers 5.6 Iterables 5.10 Destructuring assignment
5.3 Strings 5.7 Map and Set 5.11 Date and time
5.4 Arrays 5.8 WeakMap and WeakSet 5.12 JSON methods, toJSON
6.1 Recursion and stack 6.5 Global object 6.9 Decorators and forwarding, call/apply
6.2 Rest parameters and spread syntax 6.6 Function object, NFE 6.10 Function binding
6.3 Variable scope, closure 6.7 The "new Function" syntax 6.11 Arrow functions revisited
6.4 The old "var" 6.8 Scheduling: setTimeout and setInterval
7.1 Property flags and descriptors 7.2 Property getters and setters
Prototypes, inheritance
8.1 Prototypal inheritance 8.3 Native prototypes 8.4 Prototype methods, objects without
8.2 F.prototype __proto__
Classes
9.1 Class basic syntax 9.4 Private and protected properties and 9.6 Class checking: "instanceof"
9.2 Class inheritance methods 9.7 Mixins
9.3 Static properties and methods 9.5 Extending built-in classes
2 of 6 08/06/2024, 3:10 PM
Firefox https://javascript.info/
Error handling
Promises, async/await
11.1 Introduction: callbacks 11.4 Error handling with promises 11.7 Microtasks
11.2 Promise 11.5 Promise API 11.8 Async/await
11.3 Promises chaining 11.6 Promisification
Modules
13.1 Modules, introduction 13.2 Export and Import 13.3 Dynamic imports
Miscellaneous
14.1 Proxy and Reflect 14.4 Reference Type 14.7 WeakRef and FinalizationRegistry
14.2 Eval: run a code string 14.5 BigInt
14.3 Currying 14.6 Unicode, String internals
Learning how to manage the browser page: add elements, manipulate their size and position, dynamically create
interfaces and interact with the visitor.
3 of 6 08/06/2024, 3:10 PM
Firefox https://javascript.info/
Document
1.1 Browser environment, specs 1.5 Node properties: type, tag and contents 1.9 Element size and scrolling
1.2 DOM tree 1.6 Attributes and properties 1.10 Window sizes and scrolling
1.3 Walking the DOM 1.7 Modifying the document 1.11 Coordinates
1.4 Searching: getElement*, querySelector* 1.8 Styles and classes
Introduction to Events
2.1 Introduction to browser events 2.3 Event delegation 2.5 Dispatching custom events
2.2 Bubbling and capturing 2.4 Browser default actions
UI Events
3.1 Mouse events 3.3 Drag'n'Drop with mouse events 3.5 Keyboard: keydown and keyup
3.2 Moving the mouse: mouseover/out, 3.4 Pointer events 3.6 Scrolling
mouseenter/leave
Forms, controls
4.1 Form properties and methods 4.3 Events: change, input, cut, copy, paste
4.2 Focusing: focus/blur 4.4 Forms: event and method submit
5.1 Page: DOMContentLoaded, load, 5.2 Scripts: async, defer 5.3 Resource loading: onload and onerror
beforeunload, unload
Miscellaneous
6.1 Mutation observer 6.2 Selection and Range 6.3 Event loop: microtasks and macrotasks
4 of 6 08/06/2024, 3:10 PM
Firefox https://javascript.info/
Additional articles
List of extra topics that assume you've covered the first two parts of tutorial. There is no clear hierarchy here, you
can read articles in the order you want.
1.1 Popups and window methods 1.2 Cross-window communication 1.3 The clickjacking attack
Network requests
3.1 Fetch 3.5 Fetch: Cross-Origin Requests 3.9 Resumable file upload
3.2 FormData 3.6 Fetch API 3.10 Long polling
3.3 Fetch: Download progress 3.7 URL objects 3.11 WebSocket
3.4 Fetch: Abort 3.8 XMLHttpRequest 3.12 Server Sent Events
Animation
5 of 6 08/06/2024, 3:10 PM
Firefox https://javascript.info/
Web components
6.1 From the orbital height 6.4 Template element 6.7 Shadow DOM and events
6.2 Custom elements 6.5 Shadow DOM slots, composition
6.3 Shadow DOM 6.6 Shadow DOM styling
Regular expressions
7.1 Patterns and flags 7.7 Escaping, special characters 7.13 Alternation (OR) |
7.2 Character classes 7.8 Sets and ranges [...] 7.14 Lookahead and lookbehind
7.3 Unicode: flag "u" and class \p{...} 7.9 Quantifiers +, *, ? and {n} 7.15 Catastrophic backtracking
7.4 Anchors: string start ^ and end $ 7.10 Greedy and lazy quantifiers 7.16 Sticky flag "y", searching at position
7.5 Multiline mode of anchors ^ $, flag "m" 7.11 Capturing groups 7.17 Methods of RegExp and String
7.6 Word boundary: \b 7.12 Backreferences in pattern: \N and
\k<name>
6 of 6 08/06/2024, 3:10 PM