|
| 1 | +--- |
| 2 | +title: "About 33 JavaScript Concepts: Origin and Goals" |
| 3 | +sidebarTitle: "What is This Project?" |
| 4 | +description: "Discover the story behind 33 JavaScript Concepts. Learn what topics are covered, who this guide is for, and how it helps you become a better developer." |
| 5 | +--- |
| 6 | + |
| 7 | +## The Origin Story |
| 8 | + |
| 9 | +In 2017, Stephen Curtis wrote an article titled ["33 Fundamentals Every JavaScript Developer Should Know"](https://medium.com/@stephenthecurt/33-fundamentals-every-javascript-developer-should-know-13dd720a90d1). It outlined the core concepts that separate developers who *use* JavaScript from developers who truly *understand* it. |
| 10 | + |
| 11 | +[Leonardo Maldonado](https://github.com/leonardomso) took this idea and built something bigger: a curated collection of the best resources for each concept. What started as a personal learning project became one of the most popular JavaScript repositories on GitHub. |
| 12 | + |
| 13 | +<Tip> |
| 14 | +**Recognition:** GitHub featured this project as one of the [top open source projects of 2018](https://github.blog/news-insights/octoverse/new-open-source-projects/#top-projects-of-2018). |
| 15 | +</Tip> |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +## Who Is This For? |
| 20 | + |
| 21 | +This guide is for anyone who wants to learn JavaScript, regardless of your current level. |
| 22 | + |
| 23 | +| If you are... | This guide will help you... | |
| 24 | +|---------------|---------------------------| |
| 25 | +| **A complete beginner** | Build a solid foundation from the ground up | |
| 26 | +| **Self-taught** | Fill gaps in your knowledge | |
| 27 | +| **Preparing for interviews** | Understand concepts interviewers commonly ask about | |
| 28 | +| **An experienced developer** | Deepen your understanding of how JavaScript works | |
| 29 | + |
| 30 | +There are no prerequisites. If you've never written a line of code, you can start here. |
| 31 | + |
| 32 | +--- |
| 33 | + |
| 34 | +## The Original 33 Concepts |
| 35 | + |
| 36 | +These are the original 33 concepts that inspired this project. We've since reorganized and expanded some topics, but this is the foundation: |
| 37 | + |
| 38 | +<AccordionGroup> |
| 39 | + <Accordion title="Fundamentals (Concepts 1-6)"> |
| 40 | + 1. **Call Stack** - How JavaScript tracks function execution |
| 41 | + 2. **Primitive Types** - String, Number, Boolean, Null, Undefined, Symbol, BigInt |
| 42 | + 3. **Value Types vs Reference Types** - How data is stored and passed |
| 43 | + 4. **Type Coercion** - Implicit and explicit type conversion |
| 44 | + 5. **Equality Operators** - == vs === and how comparisons work |
| 45 | + 6. **Scope and Closures** - Where variables are accessible and how functions remember their environment |
| 46 | + </Accordion> |
| 47 | + |
| 48 | + <Accordion title="Functions & Execution (Concepts 7-10)"> |
| 49 | + 7. **Expression vs Statement** - Understanding the difference |
| 50 | + 8. **IIFE, Modules, and Namespaces** - Code organization patterns |
| 51 | + 9. **Message Queue and Event Loop** - JavaScript's concurrency model |
| 52 | + 10. **Timers** - setTimeout, setInterval, and requestAnimationFrame |
| 53 | + </Accordion> |
| 54 | + |
| 55 | + <Accordion title="JavaScript Engines (Concepts 11-13)"> |
| 56 | + 11. **JavaScript Engines** - V8, SpiderMonkey, and how JS runs |
| 57 | + 12. **Bitwise Operators** - Low-level operations and typed arrays |
| 58 | + 13. **DOM and Layout Trees** - How browsers render pages |
| 59 | + </Accordion> |
| 60 | + |
| 61 | + <Accordion title="Object-Oriented JavaScript (Concepts 14-18)"> |
| 62 | + 14. **Factories and Classes** - Object creation patterns |
| 63 | + 15. **this, call, apply, and bind** - Context and function binding |
| 64 | + 16. **new, Constructor, instanceof** - Object instantiation |
| 65 | + 17. **Prototype Inheritance** - JavaScript's inheritance model |
| 66 | + 18. **Object.create and Object.assign** - Object manipulation methods |
| 67 | + </Accordion> |
| 68 | + |
| 69 | + <Accordion title="Functional Programming (Concepts 19-23)"> |
| 70 | + 19. **map, reduce, filter** - Array transformation methods |
| 71 | + 20. **Pure Functions and Side Effects** - Functional programming basics |
| 72 | + 21. **Closures** - Functions that remember their scope |
| 73 | + 22. **Higher-Order Functions** - Functions that operate on functions |
| 74 | + 23. **Recursion** - Functions that call themselves |
| 75 | + </Accordion> |
| 76 | + |
| 77 | + <Accordion title="Async JavaScript (Concepts 24-26)"> |
| 78 | + 24. **Collections and Generators** - Iterables and lazy evaluation |
| 79 | + 25. **Promises** - Handling asynchronous operations |
| 80 | + 26. **async/await** - Modern async syntax |
| 81 | + </Accordion> |
| 82 | + |
| 83 | + <Accordion title="Advanced Topics (Concepts 27-33)"> |
| 84 | + 27. **Data Structures** - Arrays, Objects, Maps, Sets, and more |
| 85 | + 28. **Big O Notation** - Algorithm complexity analysis |
| 86 | + 29. **Algorithms** - Common algorithms in JavaScript |
| 87 | + 30. **Inheritance and Polymorphism** - OOP principles |
| 88 | + 31. **Design Patterns** - Proven solutions to common problems |
| 89 | + 32. **Currying and Composition** - Advanced functional techniques |
| 90 | + 33. **Clean Code** - Writing maintainable JavaScript |
| 91 | + </Accordion> |
| 92 | +</AccordionGroup> |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## What We've Changed |
| 97 | + |
| 98 | +JavaScript and web development have evolved since the original list was created. We've updated this guide to better reflect what modern developers need to know. |
| 99 | + |
| 100 | +### Concepts We Added |
| 101 | + |
| 102 | +| Concept | Why We Added It | |
| 103 | +|---------|-----------------| |
| 104 | +| **Callbacks** | Essential for understanding async JavaScript before diving into Promises | |
| 105 | +| **HTTP and Fetch** | Every web developer needs to know how to make network requests | |
| 106 | +| **Web Workers** | Important for performance and running code off the main thread | |
| 107 | +| **Error Handling** | Critical for building reliable applications | |
| 108 | +| **Regular Expressions** | A fundamental tool for text processing and validation | |
| 109 | +| **Modern JS Syntax** | Destructuring, spread operator, and other ES6+ features are now standard | |
| 110 | +| **ES Modules** | The official module system for JavaScript | |
| 111 | + |
| 112 | +### Concepts We Removed or Merged |
| 113 | + |
| 114 | +| Original Concept | What Happened | |
| 115 | +|------------------|---------------| |
| 116 | +| **Expression vs Statement** | Covered within other concept pages where relevant | |
| 117 | +| **Timers** | Merged into the Event Loop concept | |
| 118 | +| **Bitwise Operators** | Rarely used in day-to-day JavaScript development | |
| 119 | +| **new, Constructor, instanceof** | Merged into Factories and Classes | |
| 120 | +| **Object.create and Object.assign** | Merged into Object Creation and Prototypes | |
| 121 | + |
| 122 | +<Info> |
| 123 | +The goal isn't to have exactly 33 concepts. It's to give you the knowledge you need to truly understand JavaScript. |
| 124 | +</Info> |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +## What Makes This Guide Different? |
| 129 | + |
| 130 | +### Learn the Concept, Then Go Deeper |
| 131 | + |
| 132 | +Each concept page teaches you the topic directly with clear explanations and practical code examples. Once you understand the fundamentals, you'll find a curated list of articles, videos, and books to explore further. |
| 133 | + |
| 134 | +### Curated Resources |
| 135 | + |
| 136 | +Every resource is hand-picked from across the web. Instead of one perspective, you get the best explanations from multiple teachers and sources. |
| 137 | + |
| 138 | +### Community-Driven |
| 139 | + |
| 140 | +Hundreds of developers have contributed to this project. Resources are continuously reviewed, updated, and improved by the community. |
| 141 | + |
| 142 | +### Multiple Formats |
| 143 | + |
| 144 | +Everyone learns differently. Each concept includes: |
| 145 | + |
| 146 | +<CardGroup cols={3}> |
| 147 | + <Card title="Articles" icon="newspaper"> |
| 148 | + In-depth written explanations |
| 149 | + </Card> |
| 150 | + <Card title="Videos" icon="video"> |
| 151 | + Visual explanations and talks |
| 152 | + </Card> |
| 153 | + <Card title="Books" icon="book"> |
| 154 | + Comprehensive deep-dives |
| 155 | + </Card> |
| 156 | +</CardGroup> |
| 157 | + |
| 158 | +### Available in 40+ Languages |
| 159 | + |
| 160 | +Thanks to our community of translators, this guide is accessible to developers worldwide. Check out the [translations page](/translations) to find your language. |
| 161 | + |
| 162 | +--- |
| 163 | + |
| 164 | +## Ready to Continue? |
| 165 | + |
| 166 | +<CardGroup cols={2}> |
| 167 | + <Card title="How to Learn" icon="book-open" href="/getting-started/how-to-learn"> |
| 168 | + Learn how to use this guide effectively |
| 169 | + </Card> |
| 170 | + <Card title="Prerequisites" icon="wrench" href="/getting-started/prerequisites"> |
| 171 | + Set up your learning environment |
| 172 | + </Card> |
| 173 | +</CardGroup> |
0 commit comments