Praxis
Tracks
Resources
Log in
Get started
← All tracks
JavaScript Logic
The reasoning foundations — scope, closures, and thinking in small repeatable steps.
0 of 80 lessons complete
~1068 min total
Start track
Sort
Curriculum order
Easiest first
Hardest first
Lessons 1–12
Scope & the Lexical Environment → Equality & Type Coercion
0/12 done
1
Scope & the Lexical Environment
Beginner
Where a variable can be seen from — and why JavaScript decides that by where you wrote the code, not where it runs.
12 min · 0/2 questions correct
2
Closures
Intermediate
A function remembers the variables from where it was born — even after that place is gone. The idea behind debounce, counters, and React's useState.
15 min · 0/2 questions correct
3
reduce & breaking big problems into small steps
Intermediate
The one array method that can express all the others — and a way of thinking that turns a scary problem into one small step, repeated.
15 min · 0/2 questions correct
4
The Event Loop & Async
Intermediate
How single-threaded JavaScript does many things at once — the call stack, the queues, and why setTimeout(0) still waits.
16 min · 0/2 questions correct
5
this & binding
Intermediate
Why this depends on how a function is called, not where it's written — the exact opposite of variable scope.
15 min · 0/2 questions correct
6
Prototypes & the prototype chain
Intermediate
How objects inherit in JavaScript — a chain of delegation that class quietly sits on top of.
16 min · 0/2 questions correct
7
Higher-order functions (map & filter)
Beginner
Functions that take or return functions — the idea that map, filter, and reduce all share.
13 min · 0/2 questions correct
8
Promises
Intermediate
An object that stands in for a value you don't have yet — how JavaScript escaped callback hell, and the machinery async/await is built on.
14 min · 0/3 questions correct
9
async / await
Intermediate
Code that waits for a promise as if it ran straight down the page — but it's promises underneath, not a new kind of concurrency.
13 min · 0/3 questions correct
10
Hoisting
Intermediate
JavaScript scans a scope for declarations before running a single line of it — which is why some code works before the line that 'creates' it, and other code throws instead.
12 min · 0/2 questions correct
11
var, let, const & the Temporal Dead Zone
Beginner
Three ways to declare a variable, and they disagree on the two things that matter most: what scope they live in, and whether you can touch them before their line runs.
12 min · 0/2 questions correct
12
Equality & Type Coercion
Intermediate
== converts types before comparing; === refuses to. Knowing the handful of coercion rules turns 'JS is weird' into 'JS is predictable, if you know the rule.'
12 min · 0/2 questions correct
Lessons 13–24
Destructuring → Garbage Collection & Memory Leaks
0/12 done
Lessons 25–36
ES Modules vs CommonJS → BigInt and Number Precision
0/12 done
Lessons 37–48
Typed Arrays and ArrayBuffer → The Date Object's Timezone and Mutation Pitfalls
0/12 done
Lessons 49–60
Floating-Point Precision and Number.EPSILON → Private Class Fields and Methods
0/12 done
Lessons 61–72
Implementing a Hash Map → Label Statements and Loop Control
0/12 done
Lessons 73–80
The Observer Pattern in Plain JS → Hashing in the Browser with SubtleCrypto
0/8 done