jskatas.org Continuously Learn JavaScript. Your Way.

Learn JavaScript – In Depth

ECMAScript 1 19 katas

Function constructor 3

Function.length #easy #in progress
Function.prototype #easy #in progress

Type conversion 2

to number #in progress

Global Object API 3

parseInt() #easy
parseInt() in depth #easy #in progress

ECMAScript 3 2 katas

ECMAScript 5 4 katas

ECMAScript 6 / ES2015 87 katas

Destructuring 6

array #easy
string #easy
object #easy
defaults #easy

Set 5

set.delete() #easy
the API #easy
set.clear() #easy

Iterator 4

usage #in progress

Object literal 4

getter #easy
setter #easy

Template strings 4

basics #easy
multiline #easy

Spread operator 2

Block scope 2

Arrow functions 2

basics #easy

Proxy 1

basics #new

Modules 1

import statement #easy #in progress

Default parameters 1

basics #easy

Object API 1

Object.is() #easy

Unicode 1

ECMAScript 7 / ES2016 1 katas

Array API 2

ECMAScript 8 / ES2017 3 katas

Object API 2

Object.entries() #easy #in progress
Object.values() #easy #in progress

Async Function 1

ECMAScript 10 / ES2019 12 katas

Array API 4

array.flat() #in progress
array.flatMap() #in progress
stable array.sort() #in progress

String API 2

string.trimEnd() #easy #in progress

try-catch 1

unbinded catch #easy #in progress

Symbol API 1

symbol.description #in progress

JSON superset 1

JSON superset basics #in progress

JSON API 1

well-formed JSON.stringify() #easy #in progress

Function API 1

function.toString() #easy #in progress

ECMAScript 11 / ES2020 3 katas

String API 2

BigInt 1

basics #easy

ECMAScript 14 / ES2023 1 katas

Array API 2

ECMAScript 15 / ES2023 1 katas

Object API 1

Object.groupBy() #easy #new

πŸ‘€ You're a newbie, JSKatas takes you by the hand and helps you learn at your speed! Start with an easy kata to get the hang of it and find out if you like it. For example learn how to declare a variable.

πŸ§›πŸΌ You're a seasoned pro, discover hidden JavaScript gems πŸ’Ž.
For example: Do you know all three bitwise shift operators? πŸ€”

Latest Updates

October 18th, 2024
πŸ₯‹ The first Proxy basics kata inspired by the 76th #JSLang meetup
March 29th, 2024
πŸ₯‹ I released Learning JavaScript Arrays.
Let me know what you think.
March 28th, 2024
πŸ₯‹ The first array.push() kata gave me so many
more ideas for katas on arr.push(), it's a πŸ‡ hole.
March 27th, 2024
πŸ†• The first kata on Object() constructor as a function
January 16th, 2024
πŸ†• πŸ‰ First ES14/ES2023 kata array.toReversed()
November 7th, 2023
πŸ†• First type-conversion kata "to boolean"
November 5th, 2023
πŸ†• 9 new katas around functions 🀯.
πŸ”₯ The first strict mode kata.
πŸ‘·πŸ½β€β™€οΈ Each test runs in a separate worker thread now,
this allows for more test cases to be written.
October 15th, 2023
πŸ†• NEW: function.name kata.
🌟 Two katas in progress: Symbol.hasInstance and function.name in depth.
October 14th, 2023
✨ Add 'How to' on the kata pages.
🧹 Improved class-creation kata. Explains better, covers more knowledge.
Two new katas: πŸ†• function.length for ES1 and πŸ†• with ES6 features.
October 11th, 2023
πŸ†• array.shift() first introduced in 1999, has a kata now.
The kata for let is now in GIVEN-WHEN-THEN style for better usability.
October 9th, 2023
🐞 Bugfix: Make the let kata work again, it runs in a worker thread now (see issue).
October 8th, 2023
πŸ†• New kata: String.raw.
September 30th, 2023
Dive into JavaScript arrays β€” the first in-depth article in our series!
September 29th, 2023
Configure the behavior on the kata site, turn on/off the auto-open of the first kata, and more.
September 26th, 2023
πŸŽ‰ πŸŽ‰ πŸŽ‰ A Big Change. πŸŽ‰ πŸŽ‰ πŸŽ‰
Now you can solve the katas inline without going to tddbin.
September 4th, 2023
πŸ†• New kata Bitwise Shift Operators: Right Shift ">>"
πŸ†• New kata All bitwise shift operators
September 1st, 2023
πŸ†• New kata Bitwise Shift Operators: Left Shift "<<"