JavaScript Fundamentals
The language of the web, explained from the ground up. Learn syntax and scope, coercion and nullish handling, closures and this, promises and the event loop, and the array and object work every codebase is made of — and remember it with spaced repetition.
- flashcards
- 115
- flashcards
- per day
- ~10 min
- per day
- level
- Beginner → Intermediate
- level
- modules
- 6
- modules
What is JavaScript?
JavaScript is the programming language of the web — the one language that runs in every browser, and increasingly on the server through Node.js too. Almost every interactive page, web app and frontend framework is built on it, which makes a solid grasp of the fundamentals one of the highest-leverage things a developer can learn.
The fundamentals are where JavaScript rewards care. The difference between var, let and const shapes how your variables behave; type coercion is why 0 == "0" is true but 0 === "0" is not; and knowing which values are falsy or what typeof null returns turns famous "gotchas" into things you simply know.
This track runs in six modules, from the syntax up. Basics covers declarations, primitive types, equality and functions. Types and coercion goes past the famous gotchas into Object.is, Number.isNaN, parseInt radix and the nullish operator. Scope, closures and this covers the temporal dead zone, per-iteration loop bindings and every way this gets bound. Async is the event loop itself — microtasks before timers, the four Promise combinators, and why awaiting inside a loop quietly serializes your requests. The last two modules are the daily work: arrays and iteration, and objects, classes and prototypes. Every card cites the MDN page that states its fact.
6 modules, seed to bloom
Each module is a set of flashcards — 115 in total. Answer, review, and watch your knowledge grow from seed to full bloom.
Basics & Fundamentals
Variables, types, equality, operators, functions, and core JavaScript syntax
23 cardsTypes, Coercion & Nullish
Coercion rules, NaN and Object.is, parseInt vs Number, nullish coalescing, symbols and BigInt
18 cardsScope, Closures & this
Temporal dead zone, hoisting, closures, loop bindings, strict mode, and how this is bound
18 cardsAsync, Promises & the Event Loop
Promise states and combinators, async/await, microtasks vs macrotasks, and unhandled rejections
20 cardsArrays & Iteration
map, filter and reduce, mutating vs non-mutating methods, sorting, spread copies, and iteration forms
18 cardsObjects, Classes & Prototypes
Destructuring, shallow vs deep copies, optional chaining, the prototype chain, classes and private fields
18 cardsSample questions
A taste of the real flashcards. Pick an answer, then reveal the explanation.
Which keyword declares a variable whose binding cannot be reassigned?
- Aconst — it creates a binding that cannot be reassigned after initialization
- Blet — it creates a binding that can be freely reassigned at any time
- Cvar — it declares a function-scoped binding that can be reassigned
- Dstatic — it declares a fixed binding shared across every program scope
Which of the following is a primitive data type in JavaScript?
- ABoolean — an immutable primitive value holding true or false
- BArray — an ordered, indexed collection of stored values
- CObject — a keyed collection of properties and their values
- DFunction — a callable, reusable block of program code
What is the difference between == and ===?
- A=== compares value and type with no coercion; == coerces types first
- B== compares value and type strictly; === also compares the memory address
- C=== works only on numbers, while == works on all other data types
- D== and === are identical; the extra sign is only a style preference
What is the main syntactic feature of an arrow function?
- AIt uses the => syntax and omits the function keyword for a shorter form
- BIt uses the -> syntax and omits the function keyword for a shorter form
- CIt requires the function keyword followed by a => before the body
- DIt must be declared with the arrow keyword before the parameter list
What does a closure keep access to after its outer function has returned?
- AThe variables of the scope it was created in, even after that scope exits
- BA snapshot copy of those variables, frozen at the moment of return
- CNothing, the variables are freed as soon as the outer function returns
- DOnly variables the inner function explicitly redeclares with let
Which runs first: Promise.resolve().then(f) or setTimeout(f, 0)?
- AThe .then callback — microtasks run before the next macrotask starts
- BsetTimeout — timers fire before any pending microtask can be processed
- CNeither is guaranteed — the engine may run either one first at random
- DBoth run in the same microtask, in the order they were scheduled
Learn it once, keep it for good
Answer a question
Each card is one practical concept with multiple options. Pick what you think is right.
Get the full answer
See the correct option plus a clear explanation, and a link to deeper docs when one is available.
Review at the right time
A spaced-repetition engine (SM-2 or FSRS) resurfaces each card just before you would forget it.
Why JavaScript is worth your time
The language of the web
JavaScript runs in every browser and on the server via Node. Fluency is table stakes for frontend and full-stack work.
Fewer bugs from coercion
Understanding equality, falsy values and type coercion is how you stop chasing surprising bugs at their source.
The base for every framework
React, Vue and the rest are all just JavaScript. Solid fundamentals make every framework easier to learn.
Interview-ready
Closures, the event loop, hoisting and this-binding are perennial favorites in frontend and full-stack interviews.
Common questions
Do I need prior programming experience? +
No. The track starts from variables and basic syntax, so motivated beginners can follow along — while experienced developers can use it to firm up the details they half-remember.
Does it cover the tricky parts like == vs === and coercion? +
Yes. Equality, type coercion, falsy values, typeof quirks, Object.is and the nullish coalescing operator are covered directly, because those are exactly the fundamentals that trip people up.
Does it cover async JavaScript and the event loop? +
Yes — a full module. Promise states and chaining, async/await, why a resolved .then runs before setTimeout(fn, 0), the difference between Promise.all, allSettled, race and any, and what awaiting inside a loop does to concurrency.
Is it free? +
Yes, completely free. No registration or credit card is required, and all your progress is stored locally in your browser.
How long does it take? +
About 10 minutes a day. Spaced repetition means short, frequent sessions beat long cramming, so the syntax and rules stick.
Ready to master JavaScript?
Plant your first seed today. Ten minutes a day is all it takes to grow real, lasting JavaScript fluency.
