| Chapter | Details |
|---|---|
| 1: Getting started with JavaScript | Readme |
| 2: JavaScript Variables | Readme |
| 3: Built-in Constants | Readme |
| 4: Comments | Readme |
| 5: Console | Readme |
| 6: Datatypes in JavaScript | Readme |
| 7: Strings | Readme |
| 8: Date | Readme |
| 9: Date Comparison | Readme |
| 10: Comparison Operations | Readme |
| 11: Conditions | Readme |
| 12: Arrays | Readme |
| 13: Objects | Readme |
| 14: Arithmetic (Math) | Readme |
| 15: Bitwise operators | Readme |
| 16: Constructor functions | Readme |
| 17: Declarations and Assignments | Readme |
| 18: Loops | Readme |
| 19: Functions | Readme |
| 20: Functional JavaScript | Readme |
| 21: Prototypes, objects | Readme |
| 22: Classes | Readme |
| 23: Namespacing | Readme |
| 24: Context (this) | Readme |
| 25: Setters and Getters | Readme |
| 26: Events | Readme |
| 27: Inheritance | Readme |
| 28: Method Chaining | Readme |
| 29: Callbacks | Readme |
| 30: Intervals and Timeouts | Readme |
| 31: Regular expressions | Readme |
| 32: Cookies | Readme |
| 33: Web Storage | Readme |
| 34: Data attributes | Readme |
| 35: JSON | Readme |
| 36: AJAX | Readme |
| 37: Enumerations | Readme |
| 38: Map | Readme |
| 39: Timestamps | Readme |
| 40: Unary Operators | Readme |
| 41: Generators | Readme |
| 42: Promises | Readme |
| 43: Set | Readme |
| 44: Modals - Prompts | Readme |
| 45: execCommand and contenteditable | Readme |
| 46: History | Readme |
| 47: Navigator Object | Readme |
| 48: BOM (Browser Object Model) | Readme |
| 49: The Event Loop | Readme |
| 50: Strict mode | Readme |
| 51: Custom Elements | Readme |
| 52: Data Manipulation | Readme |
| 53: Binary Data | Readme |
| 54: Template Literals | Readme |
| 55: Fetch | Readme |
| 56: Scope | Readme |
| 57: Modules | Readme |
| 58: Screen | Readme |
| 59: Variable coercion/conversion | Readme |
| 60: Destructuring assignment | Readme |
| 61: WebSockets | Readme |
| 62: Arrow Functions | Readme |
| 63: Workers | Readme |
| 64: requestAnimationFrame | Readme |
| 65: Creational Design Patterns | Readme |
| 66: Detecting browser | Readme |
| 67: Symbols | Readme |
| 68: Transpiling | Readme |
| 69: Automatic Semicolon Insertion - ASI | Readme |
| 70: Localization | Readme |
| 71: Geolocation | Readme |
| 72: IndexedDB | Readme |
| 73: Modularization Techniques | Readme |
| 74: Proxy | Readme |
| 75: .postMessage() and MessageEvent | Readme |
| 76: WeakMap | Readme |
| 77: WeakSet | Readme |
| 78: Escape Sequences | Readme |
| 79: Behavioral Design Patterns | Readme |
| 80: Server-sent events | Readme |
| 81: Async functions (async/await) | Readme |
| 82: Async Iterators | Readme |
| 83: How to make iterator usable inside async callback function | Readme |
| 84: Tail Call Optimization | Readme |
| 85: Bitwise Operators - Real World Examples (snippets) | Readme |
| 86: Tilde ~ | Readme |
| 87: Using JavaScript to get/set CSS custom variables | Readme |
| 88: Selection API | Readme |
| 89: File API, Blobs and FileReaders | Readme |
| 90: Notifications API | Readme |
| 91: Vibration API | Readme |
| 92: Battery Status API | Readme |
| 93: Fluent API | Readme |
| 94: Web Cryptography API | Readme |
| 95: Security issues | Readme |
| 96: Same Origin Policy & Cross- Origin Communication | Readme |
| 97: Error Handling | Readme |
| 98: Global error handling in browsers | Readme |
| 99: Debugging | Readme |
| 100: Unit Testing JavaScript | Readme |
| 101: Evaluating JavaScript | Readme |
| 102: Linters - Ensuring code quality | Readme |
| 103: Anti-patterns | Readme |
| 104: Performance Tips | Readme |
| 105: Memory eciency | Readme |
| Appendix A: Reserved Keywords | Readme |