JavaScript

Join the JavaScript Track
JavaScript is a scripting language, primarily used for creating dynamic websites and programming web servers. It's a very popular language, and supports a variety of programming paradigms.
Join the JavaScript Track
Track mentors

63 Mentors

Our mentors are friendly, experienced JavaScript developers who will help teach you new techniques and tricks.
Track students

20,352 Students

Join thousands of students who have enjoyed learning and improving their skills by taking this track.
Track exercises

94 Exercises

Hundreds of hours have gone into making these exercises fun, useful, and challenging to help you enjoy learning.

About JavaScript

class HelloWorld {
  hello() {
    return 'Hello, World!';
  }
}

export default HelloWorld;

ECMAScript is the standard that defines JavaScript, the language that allows web pages to be dynamic. It is an interpreted language, which means that it doesn't need to be compiled by the programmer: instead the client (such as a web browser) will parse the code and turn it into code that their machine can run - suitable for creating dynamic websites that can run on any browser on any computer!

In addition to use in web pages with modern web browsers, and it can also be executed on servers where the NodeJS platform is installed where it can be used for creating a web server too.

"ECMAScript has grown to be one of the world’s most widely used general purpose programming languages. It is best known as the language embedded in web browsers but has also been widely adopted for server and embedded applications." —ECMA International Language Specification

Starting with the 6th edition (commonly known as ES2015 or ES6) in 2015, a new edition of the standard will be released each year. The 6th edition was a major update which brought many enhancements over ES5, including notably template strings, expressive arrow function syntax, and cleaner syntax for defining classes.

However, support in current browsers is incomplete, and often requires transpilation with a tool like Babel.

_Note: This track supports the latest ECMAScript syntax via Babel and the babel-preset-env plugin, and new experimental features will be enabled with each release of the specification. Here, you will find code that not all browsers are able to run.

Join the JavaScript track

A tremendous learning opportunity to explore the depth of your own knowledge

Exercism is fantastic in learning new languages but that is not the extent of it. If you are a "more experienced" programmer you may have encountered impostor syndrome: the idea you don't really know what you think you know. Exercism lets you solve problems and put them in the space of open feedback which is a tremendous learning opportunity to explore the depth of your own knowledge. Even if you have been programming in a language for awhile it is worth checking into Exercism to see where you stand with current implementation practices.

Relaxed. Encouraging. Supportive.

Meet the JavaScript Track mentors

Once you join the JavaScript language track, you will receive support and feedback from our team of mentors. Here are the bios of a few of the mentors of this track.

Avatar of Andrew Prior

Andrew Prior https://github.com/andrew-prior

Javascript developer, father, and amateur everything else.
Avatar of Ian Fosbery

Ian Fosbery https://www.codeguy.io

I've been a programmer for over 15 years. My day-to-day lately has been JS everywhere. Everywhere. I've really gotten into functional programming in recent years, which is how I tend to write Javascript. But, it can be written in many different ways and it's all about the context.
Avatar of Marcos Brizeno

Marcos Brizeno https://github.com/MarcosX

I like to keep learning about languages, tools and anything that make developing software fun!
Avatar of Josh Morrow

Josh Morrow https://github.com/jcmorrow

I didn't feel like I understood JS for the first two years or so that I used it professionally. Once I dug into the prototypical inheritance and functions as a first-class object things really started to click, and ever since ES6 came out it's been a favorite language of mine.
Avatar of Rin Raeuber

Rin Raeuber https://github.com/rin

My grandma taught me BASIC, but I never learnt to whistle. – Originally a Ruby coder, I only recently learnt the ins and outs and this’ and thats of Javascript myself. Lost and overwhelmed? Been there and happy to help.
Avatar of Andre Marcelo-Tanner

Andre Marcelo-Tanner MyDev.org - Personal Blog

Software engineer for over 18 years, a wealth of experience in building online systems, e-commerce sites, large databases and tackling hard problems at scale.
Fun. Challenging. Interesting

Community-sourced JavaScript exercises

These are a few of the 94 exercises on the JavaScript track. You can see all the exercises here.

Queen Attack
hard
control flow conditionals
control flow loops
equality
exception handling
optional values
parsing
text formatting
Secret Handshake
medium
algorithms
arrays
bitwise operations
control flow conditionals
control flow loops
games
Run Length Encoding
easy
control flow conditionals
exception handling
parsing
pattern recognition
regular expressions
strings
text formatting
Connect
medium
arrays
control flow conditionals
control flow loops
games
maps
parsing
Two Fer
easy
booleans
logic
optional values
strings
text formatting
Allergies
medium
arrays
bitwise operations
control flow conditionals
control flow loops
Passionate. Knowledgeable. Creative.

Meet the JavaScript Track maintainers

The JavaScript Maintainers are the brains behind the JavaScript Track. They spend their spare time creating interesting and challenging exercises that we can all learn from. We are incredibly grateful for their hard work. Here are the bios of a few of the maintainers of this track.

Avatar of Matt Morgan

Matt Morgan

Learn, teach, build, repeat!
Avatar of Rubén Chavarría

Rubén Chavarría Here is where I blog

I'm a Web Developer with a passion for taking code that is hard to maintain and cleaning, refactoring, and bringing it back into a manageable state

Get started with the JavaScript track. As with everything on Exercism, it's 100% free!

Join the JavaScript Track