From Variables to Objects: Master JS Fundamentals through interactive diagrams, visualizations & quizzes
Click each day to explore its content in detail
The story of how a "silly little brother" became the language of the web
Java was powerful but had critical limitations for the web
How JS code actually becomes machine instructions
Hover over each component to learn what it does
See how JavaScript manages function execution order
JS engine moves declarations to the top of their scope before executing
Understanding how JavaScript categorizes data โ and how to work with it using operators
| Feature | Primitive | Object |
|---|---|---|
| Storage | By Value (copy) | By Reference (pointer) |
| Mutable | No (immutable) | Yes (mutable) |
| Comparison | Value equality | Reference equality |
| typeof null | Returns "object" โ famous JS bug! Always use === null to check. | |
| typeof array | Returns "object" โ use Array.isArray() instead. | |
| Feature | var | let | const |
|---|---|---|---|
| Scope | Function | Block { } | Block { } |
| Reassign | Yes | Yes | No (TypeError) |
| Redeclare | Yes (dangerous!) | No (SyntaxError) | No (SyntaxError) |
| Hoisting | undefined (silent bug) | TDZ (ReferenceError) | TDZ (ReferenceError) |
| Global Object | window.x (leaks!) | No | No |
| Use When | NEVER in modern JS | Value will change | DEFAULT choice (90%) |
const by default. Use let only when you need to reassign. Never use var in modern JavaScript (ES6+).Explore all major operators with interactive examples
== operator does type coercion which leads to confusing bugs like 0 == false being true.Toggle A and B to see logical operator results
Control flow with loops and mastering JS's built-in Number, Math, and String toolbox
Loops execute a block of code multiple times until a condition becomes false
JavaScript uses IEEE 754 double-precision floating point for ALL numbers โ integers and floats are the same type
Math is a built-in object with properties and methods for mathematical operations โ no need to import
Strings in JS are immutable โ all methods return a NEW string, never modify the original
Template literals use backticks (`) โ the modern way to build strings
${...}Write and run JavaScript code right here in the browser
Test your understanding with 20 MCQs across all topics