JavaScript Challenges
JavaScript Quiz & Practice
The language that runs the web — and bites developers every day.
JavaScript has more quirks per line than any other language. typeof null, hoisting, closures, async traps — these aren't tricks, they're real bugs in real codebases. Solve one JS shot a day to build the instincts that separate senior engineers from the rest.
88
Total Shots
24
Junior
37
Mid-Level
27
Senior
5 Must-Know JavaScript Concepts
The topics that come up again and again in interviews — and in bugs.
Closures & Scope
Lexical scope, variable capture, and the IIFE pattern.
Hoisting
How var, let, const, and function declarations get lifted.
Event Loop & Async
Microtasks, macrotasks, Promises, and async/await order.
Prototypal Inheritance
__proto__, Object.create(), and the prototype chain.
Type Coercion
== vs ===, falsy values, and typeof edge cases.
JavaScript Masterclass Guides
Deep dives into tricky concepts to help you ace your interviews.
Top 10 JavaScript Challenges
Start here — these are the shots developers get wrong the most.
#1
JavaScript Promise.all — What Happens on Single Rejection?
#2
JavaScript Block Scope — Can you reassign a const?
#3
JavaScript Array.map() — What Happens With Empty Arrays?
#4
JavaScript Promises — What Happens to Unhandled Rejections?
#5
JavaScript Top-Level Await — Does it Work Outside Async?
#6
JavaScript String Manipulation — What does this output?
#7
JavaScript Array.find() — What is the output?
#8
JavaScript Memoization — What does this output?
#9
JavaScript Higher-Order Functions — What is the Output?
#10
JavaScript Object Methods — What is Logged?
Get the Daily JavaScript Shot in Your Inbox
One JavaScript challenge every morning. No fluff, no newsletter filler. Just the shot and the explanation.
📫 No spam. Unsubscribe any time.
All JavaScript Challenges (88)
Every JavaScript shot ever published on CodeShot.
1
JavaScript Promise.all — What Happens on Single Rejection?
2
JavaScript Block Scope — Can you reassign a const?
3
JavaScript Array.map() — What Happens With Empty Arrays?
4
JavaScript Promises — What Happens to Unhandled Rejections?
5
JavaScript Top-Level Await — Does it Work Outside Async?
6
JavaScript String Manipulation — What does this output?
7
JavaScript Array.find() — What is the output?
8
JavaScript Memoization — What does this output?
9
JavaScript Higher-Order Functions — What is the Output?
10
JavaScript Object Methods — What is Logged?
11
JavaScript Generators — What does this output?
12
JavaScript Destructuring — What does this output?
13
JavaScript Recursion — Spot the Bug in this Factorial!
14
JavaScript Event Handlers — Why is this bug happening?
15
JavaScript Closures — Spot the Memoization Bug!
16
JavaScript Closures — Can You Spot the Debounce Bug?
17
JavaScript DOM Manipulation — Spot the Bug!
18
JavaScript Array.filter — Spot the Bug!
19
JavaScript Shallow Copy — Spot the Bug!
20
JavaScript String.includes() — What does this output?
21
JavaScript Array.reduce() — What is the Output?
22
JavaScript Proxy — What does this print?
23
JavaScript Default Parameters — What is the Output?
24
JavaScript Typeof — What is Logged?
25
JavaScript This Keyword — What Does This Output?
26
JavaScript Inheritance — What Does This Output?
27
JavaScript Equality — Are == and === Interchangeable?
28
JavaScript Async/Await — Separate Thread or Event Loop?
29
JS JSON Methods — Can They Handle All Values?
30
JavaScript Scope — Does var create a new variable in loops?
31
JS Arrays vs Objects — True or False?
32
JavaScript Event Loop — Single-Threaded or Not?
33
JavaScript const — Does it prevent variable change?
34
JavaScript Equality — == vs ===: Which one wins?
35
JavaScript Async Error Handling — .catch() vs try/catch?
36
JavaScript String to Number — Which Method is Better?
37
JavaScript Object Properties — Which Check is Better?
38
JavaScript Async/Await — Sequential vs Parallel?
39
JavaScript Array Checking — Which Method is Better?
40
JavaScript Array Cloning — Which Approach is Correct?
41
JavaScript Sets — What Does This Output?
42
JavaScript This Keyword — What does this output?
43
JavaScript Destructuring — What is logged?
44
JavaScript Rest Properties — What does this output?
45
JavaScript Event Loop — What is the Output?
46
JavaScript Template Literals — What is logged?
47
JavaScript Promises — What Does This Output?
48
JavaScript Try...Finally — Which Value is Returned?
49
JavaScript Map vs WeakMap — What is the Output?
50
JavaScript Object Spread — What is the Final Output?
51
JavaScript Object Deletion — What Happens Here?
52
JavaScript Promises — What is the Final Output?
53
JavaScript Hoisting — Can You Call This Function?
54
JavaScript Arrays — What happens at a non-existent index?
55
JavaScript Array.sort() — Why is the Order Wrong?
56
JavaScript Event Listeners — Spot the Memory Leak Bug
57
JavaScript Sets — Can You Spot the Bug?
58
JavaScript Comparison Operators — Spot the Bug!
59
JavaScript Async/Await — Spot the Bug!
60
JavaScript Timers — Spot the Bug: setInterval vs setTimeout
61
JavaScript Array Map — Why is this console.log ignored?
62
JavaScript Type Coercion — What does this output?
63
JavaScript Closures — What Gets Logged?
64
JavaScript Array.indexOf — What does this print?
65
JavaScript Truthy & Falsy — What is the Output?
66
JavaScript Object.freeze — What gets logged?
67
JavaScript Type Coercion — What does this output?
68
JavaScript Type Coercion — What does this print?
69
JS Generator Function - What does next().value print twice?
70
JavaScript Map Size
71
JavaScript Nullish Coalescing
72
JavaScript Array Method - Unraveling Depth
73
JS Closure - What gets logged?
74
javascript Variable Shadowing
75
JavaScript String Concatenation
76
JavaScript Default Parameters
77
JavaScript Equality - What's the Default Value?
78
JavaScript Closures - What gets logged in a closure?
79
JavaScript Truthy Values
80
JS Conditional Operators
81
JavaScript NaN Type
82
JavaScript Mutable Reference Error
83
JavaScript Giant Numbers
84
JavaScript + Empty Array + Object
85
JavaScript Array Concatenation
86
JavaScript Timers: What GetsLogged?
87
JavaScript Float Precision Issue
88
JavaScript Null Type Inference