Learn JavaScript – Free JS Courses for Beginners
JavaScript is a popular programming language used for building web applications, among many
other things.
In this article, I will provide a list of free online resources where you can start learning
JavaScript. After you have learned the basics then you can start building beginner friendly
projects.
1. JavaScript Algorithms and Data Structures (freeCodeCamp)
2. Learn JavaScript – Full Course for Beginners (freeCodeCamp)
3. Full Stack JavaScript (The Odin Project)
4. The Modern JavaScript Tutorial ([Link])
5. LearnJS ([Link])
6. JavaScript course (SoloLearn)
7. JavaScript Programming (freeCodeCamp)
8. JavaScript Tutorial for Beginners: Learn JavaScript in 1 Hour (Programming with Mosh)
9. JavaScript Crash Course For Beginners (Traversy Media)
JavaScript Algorithms and Data Structures
In this freeCodeCamp course, you will learn about basic JavaScript, ES6, regular expressions,
basic data structures, Object Oriented Programming, and functional programming.
This is an interactive learning environment where you will learn JavaScript by doing hundreds of
challenges and five certification algorithm challenges.
At the end you can receive a free certification to share on Twitter or put on your LinkedIn profile.
Learn JavaScript – Full Course for Beginners
In this freeCodeCamp YouTube course, you will learn about conditions, loops, functions,
objects, arrays, and ES6.
This popular course has over 7 millions views on YouTube. Beau Carnes will walk you through
all of the basic freeCodeCamp JavaScript challenges and provide detailed explanations along
the way.
Full stack JavaScript
The Odin Project has a beginner JavaScript course in the Foundations section. You will learn
the basics including conditions, loops, functions, objects, arrays, and ES6.
Then you can move onto this Odin Project course which will teach you more advanced concepts
and have you building more advanced projects.
Here is a list of some of the projects you will build throughout the course:
A Rock, Paper, Scissors Game
Tic Tac Toe
To Do List
Restaurant Page
and more...
The Modern JavaScript Tutorial
In this tutorial, you will learn about JavaScript basics, error handling, promises, Async/await, the
DOM and more.
This is a very detailed course filled with hundreds of lessons and challenges for you to
complete. They also have a very active online community where you can ask questions in the
comments section and receive assistance.
LearnJS
In this tutorial, you will learn about JavaScript basics, Object-Oriented Programming,
inheritance, and data structures.
This is a great introduction to the language filled with dozens of challenges along the way.
JavaScript Course
In this SoloLearn course, you will learn about conditions, loops, functions, objects, arrays, the
DOM, and events.
There are dozens of challenges, quizzes, and projects to do throughout the course.
Here are is a list of some of the projects you will build along the way.
Trip planner
The Snail in the Well
Currency Converter
Contact manager
and more...
JavaScript Programming
In this freeCodeCamp YouTube course, you will learn about the basics of JavaScript including
conditions, loops, functions, objects, arrays, and ES6. You will also build a blackjack game and
Google Chrome extension.
This is a very extensive 7+ hour course that will give you a good starting foundation in
JavaScript.
JavaScript Tutorial for Beginners: Learn JavaScript in 1 Hour
In this Programming with Mosh course, you will learn about JavaScript basics including
conditions, loops, functions, objects, arrays, and ES6 features.
This is a great short introductory course and Mosh is an experienced developer who will walk
you through all of these concepts in an easy to understand manner.
JavaScript Crash Course For Beginners
In this Traversy Media YouTube course, you will learn about JavaScript basics including
conditions, loops, functions, objects, arrays, and ES6.
This is a great short introductory course and Brad is an experienced developer who will walk
you through all of this concepts in an easy to understand manner.
If you enjoyed Brad's videos then check out his other suggested JavaScript videos.
JavaScript DOM Crash Course - Part 1
JavaScript DOM Crash Course - Part 2
Fetch API Introduction
AJAX Crash Course (Vanilla JavaScript)
JavaScript OOP Crash Course (ES5 & ES6)
JSON Crash Course
Courses
Basic JavaScript
JavaScript is a scripting language you can use to make web pages interactive. It is one of the
core technologies of the web, along with HTML and CSS, and is supported by all modern
browsers.
In this course, you'll learn fundamental programming concepts in JavaScript. You'll start with
basic data structures like numbers and strings. Then you'll learn to work with arrays, objects,
functions, loops, if/else statements, and more.
Collapse courseBasic JavaScript
0/113, 0 of 113 challenges completed
Not PassedComment Your JavaScript Code
Not PassedDeclare JavaScript Variables
Not Passed
functions, loops, if/else statements, and more.
Collapse courseBasic JavaScript
0/113, 0 of 113 challenges completed
Not PassedComment Your JavaScript Code
Not PassedDeclare JavaScript Variables
Not PassedStoring Values with the Assignment Operator
Not PassedAssigning the Value of One Variable to Another
Not PassedInitializing Variables with the Assignment Operator
Not PassedDeclare String Variables
Not PassedUnderstanding Uninitialized Variables
Not PassedUnderstanding Case Sensitivity in Variables
Not PassedExplore Differences Between the var and let Keywords
Not PassedDeclare a Read-Only Variable with the const Keyword
Not PassedAdd Two Numbers with JavaScript
Not PassedSubtract One Number from Another with JavaScript
Not PassedMultiply Two Numbers with JavaScript
Not PassedDivide One Number by Another with JavaScript
Not PassedIncrement a Number with JavaScript
Not PassedDecrement a Number with JavaScript
Not PassedCreate Decimal Numbers with JavaScript
Not PassedMultiply Two Decimals with JavaScript
Not PassedDivide One Decimal by Another with JavaScript
Not PassedFinding a Remainder in JavaScript
Not PassedCompound Assignment With Augmented Addition
Not PassedCompound Assignment With Augmented Subtraction
Not PassedCompound Assignment With Augmented Multiplication
Not PassedCompound Assignment With Augmented Division
Not PassedEscaping Literal Quotes in Strings
Not PassedQuoting Strings with Single Quotes
Not PassedEscape Sequences in Strings
Not PassedConcatenating Strings with Plus Operator
Not PassedConcatenating Strings with the Plus Equals Operator
Not PassedConstructing Strings with Variables
Not PassedAppending Variables to Strings
Not PassedFind the Length of a String
Not PassedUse Bracket Notation to Find the First Character in a String
Not PassedUnderstand String Immutability
Not PassedUse Bracket Notation to Find the Nth Character in a String
Not PassedUse Bracket Notation to Find the Last Character in a String
Not PassedUse Bracket Notation to Find the Nth-to-Last Character in a String
Not PassedWord Blanks
Not PassedStore Multiple Values in one Variable using JavaScript Arrays
Not PassedNest one Array within Another Array
Not PassedAccess Array Data with Indexes
Not PassedModify Array Data With Indexes
Not PassedAccess Multi-Dimensional Arrays With Indexes
Not PassedManipulate Arrays With push Method
Not PassedManipulate Arrays With pop Method
Not PassedManipulate Arrays With shift Method
Not PassedManipulate Arrays With unshift Method
Not PassedShopping List
Not PassedWrite Reusable JavaScript with Functions
Not PassedPassing Values to Functions with Arguments
Not PassedReturn a Value from a Function with Return
Not PassedGlobal Scope and Functions
Not PassedLocal Scope and Functions
Not PassedGlobal vs. Local Scope in Functions
Not PassedUnderstanding Undefined Value returned from a Function
Not PassedAssignment with a Returned Value
Not PassedStand in Line
Not PassedUnderstanding Boolean Values
Not PassedUse Conditional Logic with If Statements
Not PassedComparison with the Equality Operator
Not PassedComparison with the Strict Equality Operator
Not PassedPractice comparing different values
Not PassedComparison with the Inequality Operator
Not PassedComparison with the Strict Inequality Operator
Not PassedComparison with the Greater Than Operator
Not PassedComparison with the Greater Than Or Equal To Operator
Not PassedComparison with the Less Than Operator
Not PassedComparison with the Less Than Or Equal To Operator
Not PassedComparisons with the Logical And Operator
Not PassedComparisons with the Logical Or Operator
Not PassedIntroducing Else Statements
Not PassedIntroducing Else If Statements
Not PassedLogical Order in If Else Statements
Not PassedChaining If Else Statements
Not PassedGolf Code
Not PassedSelecting from Many Options with Switch Statements
Not PassedAdding a Default Option in Switch Statements
Not PassedMultiple Identical Options in Switch Statements
Not PassedReplacing If Else Chains with Switch
Not PassedReturning Boolean Values from Functions
Not PassedReturn Early Pattern for Functions
Not PassedCounting Cards
Not PassedBuild JavaScript Objects
Not PassedAccessing Object Properties with Dot Notation
Not PassedAccessing Object Properties with Bracket Notation
Not PassedAccessing Object Properties with Variables
Not PassedUpdating Object Properties
Not PassedAdd New Properties to a JavaScript Object
Not PassedDelete Properties from a JavaScript Object
Not PassedUsing Objects for Lookups
Not PassedTesting Objects for Properties
Not PassedManipulating Complex Objects
Not PassedAccessing Nested Objects
Not PassedAccessing Nested Arrays
Not PassedRecord Collection
Not PassedIterate with JavaScript While Loops
Not PassedIterate with JavaScript For Loops
Not PassedIterate Odd Numbers With a For Loop
Not PassedCount Backwards With a For Loop
Not PassedIterate Through an Array with a For Loop
Not PassedNesting For Loops
Not PassedIterate with JavaScript Do...While Loops
Not PassedReplace Loops using Recursion
Not PassedProfile Lookup
Not PassedGenerate Random Fractions with JavaScript
Not PassedGenerate Random Whole Numbers with JavaScript
Not PassedGenerate Random Whole Numbers within a Range
Not PassedUse the parseInt Function
Not PassedUse the parseInt Function with a Radix
Not PassedUse the Conditional (Ternary) Operator
Not PassedUse Multiple Conditional (Ternary) Operators
Not PassedUse Recursion to Create a Countdown
Not PassedUse Recursion to Create a Range of Numbers
ES6
ECMAScript, or ES, is a standardized version of JavaScript. Because all major browsers follow
this specification, the terms ECMAScript and JavaScript are interchangeable.
Most of the JavaScript you've learned up to this point was in ES5 (ECMAScript 5), which was
finalized in 2009. While you can still write programs in ES5, JavaScript is constantly evolving,
and new features are released every year.
ES6, released in 2015, added many powerful new features to the language. In this course, you'll
learn these new features, including arrow functions, destructuring, classes, promises, and
modules.
Collapse courseES6
0/29, 0 of 29 challenges completed
Not PassedCompare Scopes of the var and let Keywords
Not PassedMutate an Array Declared with const
Not PassedPrevent Object Mutation
Not PassedUse Arrow Functions to Write Concise Anonymous Functions
Not PassedWrite Arrow Functions with Parameters
Not PassedSet Default Parameters for Your Functions
Not PassedUse the Rest Parameter with Function Parameters
Not PassedUse the Spread Operator to Evaluate Arrays In-Place
Not PassedUse Destructuring Assignment to Extract Values from Objects
Not PassedUse Destructuring Assignment to Assign Variables from Objects
Not PassedUse Destructuring Assignment to Assign Variables from Nested Objects
Not PassedUse Destructuring Assignment to Assign Variables from Arrays
Not PassedDestructuring via rest elements
Not PassedUse Destructuring Assignment to Pass an Object as a Function's Parameters
Not PassedCreate Strings using Template Literals
Not PassedWrite Concise Object Literal Declarations Using Object Property Shorthand
Not PassedWrite Concise Declarative Functions with ES6
Not PassedUse class Syntax to Define a Constructor Function
Not PassedUse getters and setters to Control Access to an Object
Not PassedCreate a Module Script
Not PassedUse export to Share a Code Block
Not PassedReuse JavaScript Code Using import
Not PassedUse * to Import Everything from a File
Not PassedCreate an Export Fallback with export default
Not PassedImport a Default Export
Not PassedCreate a JavaScript Promise
Not PassedComplete a Promise with resolve and reject
Not PassedHandle a Fulfilled Promise with then
Not PassedHandle a Rejected Promise with catch
Regular Expressions
Regular expressions, often shortened to "regex" or "regexp", are patterns that help
programmers match, search, and replace text. Regular expressions are very powerful, but can
be hard to read because they use special characters to make more complex, flexible matches.
In this course, you'll learn how to use special characters, capture groups, positive and negative
lookaheads, and other techniques to match any text you want.
Collapse courseRegular Expressions
0/33, 0 of 33 challenges completed
Not Passed Using the Test Method
Not Passed Match Literal Strings
Not Passed Match a Literal String with Different Possibilities
Not Passed Ignore Case While Matching
Not Passed Extract Matches
Not Passed Find More Than the First Match
Not Passed Match Anything with Wildcard Period
Not Passed Match Single Character with Multiple Possibilities
Not Passed Match Letters of the Alphabet
Not Passed Match Numbers and Letters of the Alphabet
Not Passed Match Single Characters Not Specified
Not Passed Match Characters that Occur One or More Times
Not Passed Match Characters that Occur Zero or More Times
Not Passed Find Characters with Lazy Matching
Not Passed Find One or More Criminals in a Hunt
Not Passed Match Beginning String Patterns
Not Passed Match Ending String Patterns
Not Passed Match All Letters and Numbers
Not Passed Match Everything But Letters and Numbers
Not Passed Match All Numbers
Not Passed Match All Non-Numbers
Not Passed Restrict Possible Usernames
Not Passed Match Whitespace
Not Passed Match Non-Whitespace Characters
Not Passed Specify Upper and Lower Number of Matches
Not Passed Specify Only the Lower Number of Matches
Not Passed Specify Exact Number of Matches
Not Passed Check for All or None
Not Passed Positive and Negative Lookahead
Not Passed Check For Mixed Grouping of Characters
Not Passed Reuse Patterns Using Capture Groups
Not Passed Use Capture Groups to Search and Replace
Not Passed Remove Whitespace from Start and End
Debugging
Debugging is the process of going through your code, finding any
issues, and fixing them.
Issues in code generally come in three forms: syntax errors that
prevent your program from running, runtime errors where your code
has unexpected behavior, or logical errors where your code doesn't
do what you intended.
In this course, you'll learn how to use the JavaScript console to
debug programs and prevent common issues before they happen.
.
Collapse courseDebugging
0/12, 0 of 12 challenges completed
Not Passed Use the JavaScript Console to Check the Value of
a Variable
Not Passed Understanding the Differences between the
freeCodeCamp and Browser Console
Not Passed Use typeof to Check the Type of a Variable
Not Passed Catch Misspelled Variable and Function Names
Not Passed Catch Unclosed Parentheses, Brackets, Braces
and Quotes
Not Passed Catch Mixed Usage of Single and Double Quotes
Not Passed Catch Use of Assignment Operator Instead of
Equality Operator
Not Passed Catch Missing Open and Closing Parenthesis After
a Function Call
Not Passed Catch Arguments Passed in the Wrong Order
When Calling a Function
Not Passed Catch Off By One Errors When Using Indexing
Not Passed Use Caution When Reinitializing Variables Inside a
Loop
Not Passed Prevent Infinite Loops with a Valid Terminal
Condition
Basic Data Structures
Data can be stored and accessed in many ways. You already know
some common JavaScript data structures — arrays and objects.
In this Basic Data Structures course, you'll learn more about the
differences between arrays and objects, and which to use in
different situations. You'll also learn how to use helpful JS methods
like splice() and [Link]() to access and manipulate data.
Collapse courseBasic Data Structures
0/20, 0 of 20 challenges completed
Not PassedUse an Array to Store a Collection of Data
Not PassedAccess an Array's Contents Using Bracket Notation
Not PassedAdd Items to an Array with push() and unshift()
Not PassedRemove Items from an Array with pop() and shift()
Not PassedRemove Items Using splice()
Not PassedAdd Items Using splice()
Not PassedCopy Array Items Using slice()
Not PassedCopy an Array with the Spread Operator
Not PassedCombine Arrays with the Spread Operator
Not PassedCheck For The Presence of an Element With indexOf()
Not PassedIterate Through All an Array's Items Using For Loops
Not PassedCreate complex multi-dimensional arrays
Not PassedAdd Key-Value Pairs to JavaScript Objects
Not PassedModify an Object Nested Within an Object
Not PassedAccess Property Names with Bracket Notation
Not PassedUse the delete Keyword to Remove Object Properties
Not PassedCheck if an Object has a Property
Not PassedIterate Through the Keys of an Object with a for...in Statement
Not PassedGenerate an Array of All Object Keys with [Link]()
Not PassedModify an Array Stored in an Object
Basic Algorithm Scripting
An algorithm is a series of step-by-step instructions that describe how to do something.
To write an effective algorithm, it helps to break a problem down into smaller parts and think
carefully about how to solve each part with code.
In this course, you'll learn the fundamentals of algorithmic thinking by writing algorithms that do
everything from converting temperatures to handling complex 2D arrays.
Object Oriented Programming
OOP, or Object Oriented Programming, is one of the major approaches to the software
development process. In OOP, objects and classes organize code to describe things and what
they can do.
In this course, you'll learn the basic principles of OOP in JavaScript, including
the this keyword, prototype chains, constructors, and inheritance.
Collapse courseObject Oriented Programming
0/26, 0 of 26 challenges completed
Not Passed Create a Basic JavaScript Object
Not Passed Use Dot Notation to Access the Properties of an Object
Not Passed Create a Method on an Object
Not Passed Make Code More Reusable with the this Keyword
Not Passed Define a Constructor Function
Not Passed Use a Constructor to Create Objects
Not Passed Extend Constructors to Receive Arguments
Not Passed Verify an Object's Constructor with instanceof
Not Passed Understand Own Properties
Not Passed Use Prototype Properties to Reduce Duplicate Code
Not Passed Iterate Over All Properties
Not Passed Understand the Constructor Property
Not Passed Change the Prototype to a New Object
Not Passed Remember to Set the Constructor Property when Changing the Prototype
Not Passed Understand Where an Object’s Prototype Comes From
Not Passed Understand the Prototype Chain
Not Passed Use Inheritance So You Don't Repeat Yourself
Not Passed Inherit Behaviors from a Supertype
Not Passed Set the Child's Prototype to an Instance of the Parent
Not Passed Reset an Inherited Constructor Property
Not Passed Add Methods After Inheritance
Not Passed Override Inherited Methods
Not Passed Use a Mixin to Add Common Behavior Between Unrelated Objects
Not Passed Use Closure to Protect Properties Within an Object from Being Modified
Externally
Not Passed Understand the Immediately Invoked Function Expression (IIFE)
Not Passed Use an IIFE to Create a Module
Functional Programming
Functional Programming is another popular approach to software development. In Functional
Programming, code is organized into smaller, basic functions that can be combined to build
complex programs.
In this course, you'll learn the core concepts of Functional Programming including pure
functions, how to avoid mutations, and how to write cleaner code with methods
like .map() and .filter() .
Expand courseFunctional Programming
0/24, 0 of 24 challenges completed
Intermediate Algorithm Scripting
Now that you know the basics of algorithmic thinking, along with OOP and Functional
Programming, test your skills with the Intermediate Algorithm Scripting challenges.
Collapse courseIntermediate Algorithm Scripting
0/21, 0 of 21 challenges completed
Not Passed Sum All Numbers in a Range
Not Passed Diff Two Arrays
Not Passed Seek and Destroy
Not Passed Wherefore art thou
Not Passed Spinal Tap Case
Not Passed Pig Latin
Not Passed Search and Replace
Not Passed DNA Pairing
Not Passed Missing letters
Not Passed Sorted Union
Not Passed Convert HTML Entities
Not Passed Sum All Odd Fibonacci Numbers
Not Passed Sum All Primes
Not Passed Smallest Common Multiple
Not Passed Drop it
Not Passed Steamroller
Not Passed Binary Agents
Not Passed Everything Be True
Not Passed Arguments Optional
Not Passed Make a Person
Not Passed Map the Debris
JavaScript Algorithms and Data Structures Projects
This is it — time to put your new JavaScript skills to work. These projects are similar to the
algorithm scripting challenges you've done before – just much more difficult.
Complete these 5 JavaScript projects to earn the JavaScript Algorithms and Data Structures
certification.
Palindrome Checker Not Passed
Roman Numeral Converter Not Passed
Caesars Cipher Not Passed
Telephone Number Validator Not Passed
Cash Register Not Passed
Sign in to save your progress (it's free)
Browse our other free certifications
Recommended curriculum (still in beta):
Certified Full Stack Developer Curriculum
Try the coding challenge of the day:
Start
Go to Archive
Learn English for Developers:
A2 English for Developers (Beta) Certification
B1 English for Developers (Beta) Certification
Prepare for the developer interview job
search:
The Odin Project - freeCodeCamp Remix
Coding Interview Prep
Project Euler
Rosetta Code