Gnoseed
Programming · 6 modules

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
About this topic

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.

What you'll learn

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 cards

Types, Coercion & Nullish

Coercion rules, NaN and Object.is, parseInt vs Number, nullish coalescing, symbols and BigInt

18 cards

Scope, Closures & this

Temporal dead zone, hoisting, closures, loop bindings, strict mode, and how this is bound

18 cards

Async, Promises & the Event Loop

Promise states and combinators, async/await, microtasks vs macrotasks, and unhandled rejections

20 cards

Arrays & Iteration

map, filter and reduce, mutating vs non-mutating methods, sorting, spread copies, and iteration forms

18 cards

Objects, Classes & Prototypes

Destructuring, shallow vs deep copies, optional chaining, the prototype chain, classes and private fields

18 cards
Try before you plant

Sample questions

A taste of the real flashcards. Pick an answer, then reveal the explanation.

Sample · JavaScript Fundamentals

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
Permalink & share
Sample · JavaScript Fundamentals

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
Permalink & share
Sample · JavaScript Fundamentals

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
Permalink & share
Sample · JavaScript Fundamentals

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
Permalink & share
Sample · JavaScript Fundamentals

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
Permalink & share
Sample · JavaScript Fundamentals

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
Permalink & share
How Gnoseed works

Learn it once, keep it for good

1

Answer a question

Each card is one practical concept with multiple options. Pick what you think is right.

2

Get the full answer

See the correct option plus a clear explanation, and a link to deeper docs when one is available.

3

Review at the right time

A spaced-repetition engine (SM-2 or FSRS) resurfaces each card just before you would forget it.

Why learn this

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.

FAQ

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.

Start learning free