When you enroll in this course, you'll also be asked to select a specific program.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 4 modules in this course
Are you ready to elevate your JavaScript skills with a project-based approach? This course is designed to guide you through fundamental and advanced JavaScript concepts using practical, real-world challenges.
Through hands-on projects, you'll explore functional methods such as .map() and .reduce(), key logical operations such as the ternary operator and short-circuiting, form submission, and much more.
Next up, you'll explore increasingly advanced JavaScript concepts including loops, filter(), imports, and object destructuring by building three full projects; A meme picker, a cookie consent banner and an X/Twitter clone.
You’ll learn to write cleaner, more efficient code and tackle challenges that solidify your understanding of JavaScript. By the end of this course, you'll have a solid understanding of powerful JavaScript methods and techniques ready to apply directly to your coding projects and in your coding career.
Build your JavaScript skills with practical challenges that cover methods, arrays, destructuring, and more.
What's included
1 assignment49 plugins
Show info about module content
1 assignment•Total 30 minutes
JavaScript Essentials Quiz•30 minutes
49 plugins•Total 201 minutes
Intro to Mini Projects•1 minute
Welcome to interactive lessons!•1 minute
Object Destructuring•3 minutes
Object Destructuring Challenge•2 minutes
The .map() Method•7 minutes
The .map() Method Challenge•4 minutes
The .join() Method•3 minutes
The .join() Method Challenge•2 minutes
.map() vs .forEach()•5 minutes
For loop Break and Continue•5 minutes
The dangers of innerHTML•5 minutes
Beyond Function Declarations 1: Function Expressions•3 minutes
Beyond Function Declarations 2: Function Expression Challenge•2 minutes
Beyond Function Declarations 3: Arrow Functions•6 minutes
Arrow Functions Challenge•4 minutes
Inline Arrow Functions Challenge•2 minutes
Import Export (named)•4 minutes
Import Export (default)•4 minutes
The .reduce() Method•6 minutes
The .reduce() Method Challenge•4 minutes
The .reduce() Method with Objects•8 minutes
The .reduce() Method with Objects Challenge•3 minutes
Default Parameters•3 minutes
Super Challenge Set-up•3 minutes
Super Challenge Solution•9 minutes
The Ternary Operator•4 minutes
The Ternary Operator for Complex Conditionals•3 minutes
Ternary Operator Challenge•4 minutes
Twimba Ternary Refactor•5 minutes
The Rest Parameter•5 minutes
The Rest Parameter Challenge•7 minutes
Spread Syntax (...)•4 minutes
Spread Syntax (...) Challenge•5 minutes
Short-circuiting with OR (||)•5 minutes
Short-circuiting with OR (||) Challenge•2 minutes
Short-circuiting with AND (&&)•3 minutes
Short-circuiting with AND (&&) Challenge•4 minutes
Switch Statements•5 minutes
Constructors: Date()•5 minutes
The Error() Constructor•3 minutes
Objects with Methods and 'this'•5 minutes
Objects to Constructor Functions•5 minutes
Constructor Function Challenge•5 minutes
Constructor Functions to Classes•5 minutes
Constructor Functions to Classes Challenge•2 minutes
Debugging: Errors (new)•7 minutes
Debugging: console.error•2 minutes
Debugging: try...catch•5 minutes
Recap•2 minutes
Build an Annoying Cookie Consent
Module 2•3 hours to complete
Module details
This section teaches you how to build an interactive cookie consent modal using JavaScript, covering timed display, styling, forms, validation, accessibility, and user interaction handling.
What's included
1 assignment31 plugins
Show info about module content
1 assignment•Total 80 minutes
Build an Annoying Cookie Consent Graded Assignment•80 minutes
31 plugins•Total 111 minutes
Cookie Consent Intro•3 minutes
Position the modal•3 minutes
Aside: setTimeout•4 minutes
Set the timer•2 minutes
Aside: element.style•6 minutes
Make the modal reappear•2 minutes
Close the modal•3 minutes
Aside: Forms•7 minutes
Add a form 1•2 minutes
Aside: Forms - submitting•5 minutes
Aside: Forms - challenge•3 minutes
Aside: Validation Attributes•8 minutes
Submit the form•3 minutes
Aside: preventDefault•4 minutes
preventDefault Challenge•3 minutes
Buttons in forms - weird behaviour•3 minutes
Add modal message•2 minutes
Add modal messages 2•6 minutes
Add modal messages 3•3 minutes
Aside: FormData•4 minutes
Form Data 1•2 minutes
Aside: FormData methods•3 minutes
Form Data 2•3 minutes
Aside: Disabling elements•6 minutes
Disable the close button•3 minutes
There is no choice 1•4 minutes
Aside: classlist.toggle•4 minutes
Aside: Classlist Toggle Challenge•3 minutes
There is no choice 2•3 minutes
Accessibility Issues•2 minutes
Recap•2 minutes
Build a Cat Meme Picker
Module 3•3 hours to complete
Module details
This section guides you through looping, data handling, DOM manipulation, and event-driven programming in JavaScript, culminating in building an interactive feature that filters and displays cats based on user-selected emotions.
What's included
1 assignment37 plugins
Show info about module content
1 assignment•Total 30 minutes
Build a Meme Picker Graded Assignment•30 minutes
37 plugins•Total 166 minutes
Intro•4 minutes
What a horrible for loop•3 minutes
Aside: for of•5 minutes
Use a for of•2 minutes
Nest the for of•5 minutes
Render out the emotions 1•4 minutes
Render out emotions 2•6 minutes
Aside: import the data•6 minutes
Import the data•2 minutes
Aside: Radio Inputs•6 minutes
Render the radios inputs•6 minutes
Aside: .includes()•6 minutes
remove duplicates•3 minutes
Aside: e.target•6 minutes
Get the id of the clicked option•3 minutes
Aside: parentElement•3 minutes
Aside: classlist add/remove•7 minutes
Add colour to the selected emotion•6 minutes
Aside: getElementsByClassName•5 minutes
Remove the highlight class•2 minutes
Aside: querySelector and why it's useful•5 minutes
Connect the button•5 minutes
Has an emotion been chosen?•3 minutes
Aside: checkbox•6 minutes
isGif•4 minutes
Aside: filter()•6 minutes
Aside: filter() 2•5 minutes
Find matches with .filter()•4 minutes
Animated GIFs Only•4 minutes
Introducing two important functions•5 minutes
If there's only one cat...•5 minutes
If there's more than one cat...•4 minutes
renderCat()•5 minutes
Close the modal•2 minutes
The order of things•3 minutes
Aside: Select Element•7 minutes
Recap•3 minutes
Build an X/Twitter Clone
Module 4•3 hours to complete
Module details
In this module, you’ll learn how to build a fully interactive Twitter clone (“Twimba”) by working with DOM manipulation, event handling, data attributes, and conditional rendering in JavaScript.
What's included
1 assignment36 plugins
Show info about module content
1 assignment•Total 30 minutes
Build an X Clone Graded Assignment•30 minutes
36 plugins•Total 143 minutes
Intro•5 minutes
Import the data•4 minutes
Aside: TextArea•3 minutes
Add TextArea•4 minutes
Tweet Boilerplate•3 minutes
Tweet Boilerplate Challenge•4 minutes
Aside: forEach()•5 minutes
Use forEach to build the html•2 minutes
Render the tweets to the feed•4 minutes
Aside: CDN Font Awesome•6 minutes
Add some awesome icons•5 minutes
Like a tweet part 1: explanation•2 minutes
Aside: Data attributes•4 minutes
Aside: Data Attr JS and Challenge•6 minutes
Aside: Data Attribute Naming Issues•3 minutes
Like a tweet part 2: data attributes•2 minutes
Like a tweet part 3: eventListener•0 minutes
Like a tweet part 4: handleLikeClick()•4 minutes
Like a tweet part 5: find the tweet object•6 minutes
Aside: Copying objects and arrays•4 minutes
Like a tweet part 6: render the increment•1 minute
Unlike a tweet•3 minutes
Flip a boolean•2 minutes
Retweet a tweet•8 minutes
Aside: Conditionally render CSS class•7 minutes
Color the icons•6 minutes
Replies 1: get uuids of tweets with replies•3 minutes
Replies 2: HTML string for replies and add to parent div•6 minutes
Replies 3: toggle hidden•5 minutes
Refactor the tweet btn•4 minutes
Aside: UUID•7 minutes
Build the new Tweet object•4 minutes
Render a new tweet•2 minutes
UX fixes•5 minutes
Recap•3 minutes
Deploy Twimba•1 minute
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Scrimba is an interactive code-learning platform with over a million users from all over the world. They feature highly interactive and engaging courses about programming and web development.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.