We may earn an affiliate commission when you visit our partners.
Steven Hancock

This course focusses on and explains thoroughly the critical concepts and best practices in JavaScript. It dives into important fundamentals that often get glossed over. And then takes on the more advanced techniques in JavaScript and explores them deeply. The course not only covers the HOW and WHAT, it also focusses on the WHY in order to increase your understanding. All critical to becoming an advanced JavaScript developer.

Read more

This course focusses on and explains thoroughly the critical concepts and best practices in JavaScript. It dives into important fundamentals that often get glossed over. And then takes on the more advanced techniques in JavaScript and explores them deeply. The course not only covers the HOW and WHAT, it also focusses on the WHY in order to increase your understanding. All critical to becoming an advanced JavaScript developer.

If you are somewhat comfortable with JavaScript, you can jump right in at the beginning. With the two included appendices, this courses is also ideal for someone just getting started with JavaScript. The appendices will review basic concepts that this course builds on.

At 25 hours of instruction, you will master JavaScript in a way only top JavaScript developers do. Here is why:

  • The course is taught by the lead trainer at All Things JavaScript, whose mission is to facilitate your journey from novice to expert.

  • The course is constantly updated with new content and new topics.

  • The course focusses on JavaScript, so you learn JavaScript fully without worrying about ancillary technologies.

  • The course explores how things work under the hood so your understanding is deep and relevant.

  • The curriculum touches multiple aspects of JavaScript.

  • The curriculum was developed over a period of several years.

If you want to improve your JavaScript skills, this course is for you.

The topics you will learn in this course are timeless and will continue to serve you for years in a promising career as a JavaScript developer. You will not find a course as detailed and as in-depth as this course. The concepts and topics taught will put you in the top of all JavaScript developers.

Enroll now

What's inside

Learning objectives

  • Critical javascript concepts, practices and techniques
  • Fundamental javascript concepts: engine, heap, call stack and event loop
  • Object oriented programming
  • Functional programming
  • Critical asynchronous coding patterns
  • All facets of javascript modules
  • Error handling
  • Critical javascript shortcuts
  • Execution context and lexical environment
  • Ubiquitous nature of objects
  • Scope and block scope
  • Type coercion with truthy and falsey
  • Callbacks
  • Keyword this
  • Using call, apply and bind
  • First class and higher order functions
  • Closure
  • Critical javascript patterns
  • Immediately invoked function expressions (iifes)
  • Prototype chain
  • Constructors, factory functions and classes
  • Promises and async await
  • Static method for asynchronous patterns
  • Bigint
  • Arrow functions and their affects on the keyword this
  • And much more
  • Show more
  • Show less

Syllabus

Introduction
Welcome
How to be Successful in this Course
Getting Set Up
Read more
What about Node.js?
Working with JavaScript Code
Critical JavaScript Concepts
The JavaScript Runtime Environment
Understanding the JavaScript Engine
The Memory Heap and Call Stack
Understanding Garbage Collection
Removing Event Listeners
Understanding the Event Loop
The Node Runtime Environment
Exercise Start: Exploring Call Stack and Event Loop
Exercise End: Exploring Call Stack and Event Loop
How JavaScript Evolves
Critical Fundamentals
Section Introduction
The Execution Context
A Consistent Global Object
Hoisting
Function Declarations Versus Function Expressions
Exercise Start: Function Execution Context
Exercise End: Function Execution Context
Lexical Environment
Scope and the Scope Chain
Block Scope
Exercise: Using let in a for Loop
Creating Constants
Should You Continue Using var?
Global Variables and the Danger of the Scope Chain
Exercise Start: Scope
Exercise End: Scope
JavaScript and Data Types
Objects are Everywhere
Type Coercion
Making Use of Truthy and Falsy
Loose Equality Versus Strict Equality
Exercise Start: Coercion
Exercise End: Coercion
Using the BigInt Type
Passing Primitives and Objects: Value or Reference?
Cloning JavaScript Objects
Exercise: Pass by Reference
Exercise Start: Pass by Reference and Cloning
Exercise End: Pass by Reference and Cloning
Using Strict Mode
Tricky Fundamentals
Tricky Fundamentals Introduction
Callbacks
Understanding the Keyword this
Using the Keyword this with Object Methods
Exercise Start: The Keyword this
Exercise End: The Keyword this
Common Issues with the Keyword this
Using call() and apply()
Using bind()
Taking Control of the Keyword this
Exercise Start: Using call(), apply() or bind()
Exercise End: Using call(), apply() or bind()
Arrow Functions
Solving this Binding with Arrow Functions
Arrow Functions are NOT for Every Occasion
Critical Principles and Techniques for Functions
Functions are First Class Citizens
Higher Order Functions
Creating Your Own Higher Order Functions
Exercise Start: Create Higher Order Function
Exercise End: Create Higher Order Function
Closures
Using Closure with Returned Functions
Important Features of Closures
Looking Ahead: The Traditional Module Pattern
Exercise Start: Closures 1
Exercise End: Closures 1
Exercise Start: Closures 2
Exercise End: Closures 2
Immediately Invoked Function Expressions (IIFEs)
Applying IIFEs
Exercise Start: IFFEs
Exercise End: IFFEs
Critical Fundamentals for Objects
The Nature of Objects
What is a Prototype and Why?
Prototype Objects are Everywhere!
Prototype Chains
Object Properties have Precedence
Programming Paradigms: An Overview
Introduction to Programming Paradigms
Advantages of Programming Paradigms
Object Oriented Programming
Getting Started with OOP
Using Factory Functions to Create Objects
Using Object.create()
Using Prototypes with Factory Functions
Exercise Start: Factory Functions

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores the JavaScript engine, memory heap, and call stack, which are essential for understanding how JavaScript code is executed and optimized
Covers object-oriented and functional programming paradigms in JavaScript, enabling learners to write more modular, reusable, and maintainable code
Examines asynchronous coding patterns using Promises and Async/Await, which are crucial for handling asynchronous operations and improving application responsiveness
Discusses the use of `call`, `apply`, and `bind`, which are important for manipulating the `this` keyword and controlling function execution context
Includes coverage of Immediately Invoked Function Expressions (IIFEs), which are useful for creating private scopes and avoiding variable hoisting issues
Requires learners to understand basic JavaScript concepts, which may necessitate reviewing the appendices for those with limited prior experience

Save this course

Save JavaScript: The Critical Parts Masterclass to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in JavaScript: The Critical Parts Masterclass with these activities:
Review Basic JavaScript Syntax
Reinforce fundamental JavaScript syntax to ensure a solid foundation for understanding more advanced concepts covered in the course.
Show steps
  • Review variables, data types, and operators.
  • Practice writing simple JavaScript functions.
  • Familiarize yourself with control flow statements (if/else, loops).
Read 'Eloquent JavaScript'
Deepen your understanding of JavaScript fundamentals and best practices by reading a well-regarded book on the subject.
Show steps
  • Read the first few chapters covering basic syntax and data structures.
  • Work through the exercises at the end of each chapter.
  • Take notes on key concepts and challenging topics.
Practice 'this' Keyword Exercises
Solidify your understanding of the 'this' keyword, a common source of confusion in JavaScript, through targeted practice exercises.
Browse courses on this Keyword
Show steps
  • Find online resources with 'this' keyword practice problems.
  • Work through the exercises, paying attention to context.
  • Review solutions and explanations to understand the correct usage.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read 'You Don't Know JS' series
Expand your knowledge of advanced JavaScript concepts by reading the 'You Don't Know JS' series.
Show steps
  • Choose a book from the series that aligns with your interests.
  • Read a chapter or two each week.
  • Take notes and experiment with the code examples.
Create a Blog Post on Closures
Reinforce your understanding of closures by explaining the concept in your own words in a blog post.
Browse courses on Closures
Show steps
  • Research and gather information on closures.
  • Write a clear and concise explanation of closures.
  • Include examples to illustrate the concept.
  • Publish your blog post online.
Answer JavaScript Questions on Stack Overflow
Reinforce your understanding of JavaScript by helping others learn and solve problems on Stack Overflow.
Browse courses on JavaScript
Show steps
  • Browse Stack Overflow for JavaScript questions.
  • Answer questions you feel confident in addressing.
  • Provide clear and concise explanations with code examples.
Build a Simple Module Bundler
Deepen your understanding of JavaScript modules by building a simplified version of a module bundler.
Show steps
  • Research existing module bundlers like Webpack or Parcel.
  • Design a simplified bundler that handles basic module dependencies.
  • Implement the bundler using JavaScript.
  • Test the bundler with a small project.

Career center

Learners who complete JavaScript: The Critical Parts Masterclass will develop knowledge and skills that may be useful to these careers:
JavaScript Developer
A JavaScript developer specializes in writing JavaScript code. This course is designed specifically to assist an individual in becoming a top JavaScript developer. It provides a deep dive into critical JavaScript concepts and best practices. The course covers fundamental topics and advanced techniques, exploring how things work under the hood. The course's detailed exploration of areas such as the use of 'this', closures, prototypes, and asynchronous patterns are critical for any JavaScript developer. This course is ideal for anyone looking for deep knowledge of JavaScript.
Full-Stack Developer
A full stack developer works on both the frontend and backend of applications. This role requires a strong understanding of JavaScript across the entire stack, and this course offers comprehensive training to help any aspiring full stack developer. Its coverage of critical JavaScript concepts, including object-oriented and functional programming, and asynchronous coding patterns with promises and async/await, are directly applicable to both the frontend and backend. The course's emphasis on modules and error handling are also crucial for building and maintaining a full-stack application.
Frontend Developer
A frontend developer builds the user interface of websites and web applications. This role demands a strong understanding of JavaScript, a language that is used extensively in frontend development. This course's deep dive into JavaScript fundamentals such as the engine, call stack, and event loop, as well as critical concepts like object-oriented and functional programming, helps build a strong foundation. Additionally, its exploration of asynchronous coding with promises and async/await are directly applicable to modern web development. This course is ideal for any prospective frontend developer who wants to work on complex web-based applications.
Software Engineer
Software engineers design, develop, and maintain software systems. JavaScript is a frequently used language in software engineering, particularly for web-based applications. This course provides a software engineer with fundamental knowledge and skill in JavaScript development. The course focuses on the critical concepts, practices, and techniques of JavaScript that any good software engineer needs, and its curriculum touches on many aspects of the language from the execution context to asynchronous patterns. The course will help a software engineer build a robust understanding of JavaScript.
Backend Developer
Backend developers build and maintain the server-side logic and databases that power applications. JavaScript, especially with Node.js, is frequently used for backend development, and this course helps prepare someone for the role. The course's focus on asynchronous programming, modules, and error handling are helpful for building robust server-side applications. Moreover, understanding execution context, scope, and closures taught in this course will assist any backend developer in writing well structured code, and its explanation of JavaScript patterns make it applicable to a backend environment.
UI Developer
UI developers focus on the user interface and how users interact with applications. As JavaScript is crucial for creating interactive and dynamic user interfaces, the concepts of this course help prepare anyone who wants to be a UI developer. The course helps build a foundation in JavaScript fundamentals, functional and object-oriented programming, and asynchronous coding. Additionally, the topics on execution context, scope and closures will be useful when constructing the user interface. This course may be helpful to aspiring UI developers.
Web Application Developer
Web application developers create and maintain web-based software. This course offers substantial knowledge for a web application developer because modern web applications rely heavily on JavaScript for both client-side and server-side development. The course emphasizes mastering critical concepts and techniques in JavaScript including asynchronous coding, modules, and error handling. Understanding topics such as execution context, closures, and prototypes are especially important for building complex web application logic. This course may be useful for any developer wishing to master how JavaScript functions.
Software Development Engineer
Software development engineers develop and maintain software code. JavaScript plays a role in many software projects, especially web-based ones. This course is useful to a software development engineer by building a deep knowledge of JavaScript. The course goes over critical concepts, practices, and techniques for becoming proficient in the language and covers a range of topics from the JavaScript engine to asynchronous programming. This provides a foundation for anyone wishing to use JavaScript in a software development role. This course may be helpful for aspiring software development engineers.
Application Developer
Application developers create software applications for different platforms. JavaScript is frequently used in application development, particularly for web and mobile platforms. This course gives any application developer a deep understanding of the JavaScript language, by exploring critical concepts, practices, and techniques. Its coverage of asynchronous patterns, modules, and object-oriented programming, as well as its discussion of execution context, closures, and prototypes, are all useful for application development. This course may be useful for an application developer who wants a better understanding of JavaScript.
Mobile Application Developer
A mobile application developer creates applications for mobile devices. While it is not exclusively used in mobile development, JavaScript can be used through frameworks like React Native. This course on JavaScript helps a mobile application developer by providing an in-depth understanding of core JavaScript principles. Its exploration of asynchronous programming, execution context, and object-oriented programming are fundamental for building and maintaining complex mobile applications. This course may be helpful for mobile application developers who want to understand JavaScript more fully.
Technical Lead
A technical lead guides and mentors other developers and oversees technical projects. A technical lead who understands JavaScript is crucial in organizations that use JavaScript, and this course is useful for a technical lead who wishes to improve their Javascript skills. The course will help by providing a deep understanding of the language, its fundamentals, and its advanced techniques. Its curriculum covers many aspects of JavaScript and will assist anyone seeking leadership roles. This course may be useful for technical leads.
Technical Architect
A technical architect designs and oversees the technical aspects of projects, often at a system-wide level. This course can provide a technical architect with a necessary understanding of JavaScript, especially in web based contexts. The course goes over critical concepts, practices, and techniques that every technical architect should know. The deep dive into JavaScript fundamentals, object-oriented and functional programming, and asynchronous coding may be useful for architects involved in designing JavaScript-based applications. The course may be helpful for a technical architect.
Game Developer
A game developer creates video games. While not the primary language, JavaScript can be used in web-based games or game engines that support it. The course can be helpful to a game developer by providing a strong foundation in programming concepts and best practices. The course covers important fundamentals such as object-oriented programming, asynchronous coding, and execution context. While not directly game specific, these concepts transfer to game development and improve overall skill. This course may be useful to a game developer.
DevOps Engineer
A DevOps engineer is involved in software deployment and infrastructure. While not the core focus, JavaScript can be used for scripting and automation in DevOps environments. This course gives a DevOps engineer a better understanding of the JavaScript language itself. While not all topics are directly relevant, the in-depth view of JavaScript fundamentals can be helpful for a DevOps engineer who has to work with and debug javascript code. This course may be helpful for a DevOps engineer.
Data Scientist
Data scientists analyze large datasets to derive insights and trends. While JavaScript isn't usually used for data analysis, it is critical for building data visualization interfaces and web applications that interact with data. This course can help a data scientist by building a deeper understanding of how JavaScript executes. However, this role typically requires an advanced degree and this course may be helpful to a data scientist if their work requires the use of javascript.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in JavaScript: The Critical Parts Masterclass.
This series dives deep into the core mechanisms of JavaScript. It's invaluable for understanding the 'under the hood' aspects of the language. While not a beginner's book, it's excellent for solidifying and expanding knowledge gained in the course. It is more valuable as additional reading than as a current reference.
Eloquent JavaScript provides a comprehensive introduction to the language, covering both fundamental and advanced topics. It's particularly helpful for understanding JavaScript's unique features and paradigms. is often used as a textbook in introductory JavaScript courses. It adds depth to the course by exploring the 'why' behind JavaScript's design choices.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser