javascript_-_the_tricky_parts_by_maximilian_schwarzmuller

JavaScript - The Tricky Parts by Maximilian Schwarzmuller

Maximilian Schwarzmuller is one of Cloud Monk's favorite teachers of programming on the Internet.

JavaScript is amazing but it has some “quirks and features”. In this course, we'll dive into 'this', closures, recursion, hoisting, scopes and much, much more!

JavaScript is an amazing programming language - and a very versatile one, too.

But it also can be tricky at times.

There are some concepts in JavaScript, that often lead to confusion and errors - that's exactly what we'll dive into in this course!

This course will explore the following “tricky parts” in depth AND in understandable words, so that you can use this course both as a reference you come back to in the future as well as a resource to strengthen your JavaScript knowledge:

Scope & Hoisting Callback Functions (Indirect vs Direct Function Execution) Loops (yes, they do contain some “weird” parts) Primitive vs Reference Values Value Types & Type Coercion Recursion Closures Asynchronous Code (Callbacks, Promises, async/ await) The “this” Keyword Prototypes Those concepts will be explained in detail and theory as well as in practice with short and concise code snippets and examples.

You will learn:

What's tricky about those concepts WHY it works the way it works WHAT you should remember or keep in mind

Important: This course is NOT a course for beginners! JavaScript knowledge is expected!

But you don't have to be an expert or advanced user.

This course aims to help you understand those tricky concepts, it's also meant to be a resource you can dive into if you just want to look up one specific concept (instead of having to search through an entire JavaScript course).

Therefore, every course section is built such that it works standalone, independent from the other sections. There is no overarching course project or anything like that - instead, you get “to the point”, focused sections that have the goal of making those “tricky parts” less tricky as quickly as possible!

9+ hours 100+ lessons Course Curriculum

Getting Started

  • Welcome to the Course! (1:53)
  • About this Course (5:14)
  • Course Requirements & Info (1:39)
  • How To Take This Course (2:05)
  • Join the Learning Community

Scopes & Hoisting

  • Module Introduction (0:30)
  • Getting Started (2:39)
  • Scope in Theory (2:31)
  • Introducing Global and Local (Function) Scope (4:07)
  • How Scope Works (6:47)
  • Getting to Know “Block Scope” (7:56)
  • Scope Overview (1:44)
  • Special Cases (11:02)
  • The Global Object (7:11)
  • Scope Across Files (4:13)
  • Modules & Scope (7:53)
  • Variable Shadowing (3:54)
  • Quiz: Scope
  • What is “Hoisting”? (4:00)
  • Hoisting in Action (7:32)
  • Hoisting Inside Of Functions (3:05)
  • “let” & “const” and Hoisting (5:57)
  • Hoisting Precedence (3:12)
  • Quiz: Hoisting
  • Module Resources

Direct vs Indirect Function Execution (Callbacks & Events)

  • Module Introduction (0:34)
  • Direct vs Indirect Function Execution (2:38)
  • Direct Execution in Action (3:30)
  • Indirect Execution in Action (4:53)
  • Indirect Execution With Anonymous Functions (2:24)
  • Indirect Execution and Passing Arguments (7:49)
  • Quiz: Direct vs Indirect Function Execution
  • Module Resources

Loops

  • Module Introduction (0:21)
  • Loops Overview (3:23)
  • The “for” Loop (6:09)
  • The “for” Loop with “let” (2:46)
  • The “for … in …” Loop (7:04)
  • The “for … of …” Loop (5:09)
  • Using forEach() (4:04)
  • Quiz: Loops
  • Module Resources

Primitive vs Reference Values

  • Module Introduction (0:39)
  • What are “Primitive” and “Reference Values”? (7:03)
  • Primitive Values in Action (6:27)
  • Reference Values in Action (3:00)
  • Behind the Scenes (2:32)
  • Immutability vs Mutability (2:35)
  • Primitive Wrapper Objects (4:37)
  • “const” & Mutation (5:32)
  • Reference Value Equality (6:06)
  • Copying Reference Values (13:01)
  • Quiz: Primitive vs Reference Values
  • Module Resources

Types & Type Coercion

  • Module Introduction (0:45)
  • What's Special About Types in JavaScript? (3:17)
  • What is “Coercion”? (5:48)
  • How Operators Influence Types & Coercion (6:14)
  • Coercion Rules (9:38)
  • Arithmetic Operators & Basic Comparisons (7:29)
  • Comparison Operators for Booleans & Coercion (5:59)
  • Truthy and Falsy Values (4:58)
  • Boolean Return Values (4:45)
  • Explicit Boolean Coercion with the Double Bang Operator (3:46)
  • Semi-explicit Value Coercion (2:57)
  • The Special Case of “null” (7:18)
  • More on null, undefined and NaN (4:10)
  • Objects & Arrays - Coercion Theory (3:41)
  • Objects & Arrays - Coercion in Action (5:18)
  • Objects & Comparisons (6:12)
  • Explicit Object Coercion (4:08)
  • Implicit Number Coercion for Objects (2:33)
  • Wrap Up (1:47)
  • Quiz & Time to Practice (16:29)
  • Module Resources

Recursion

  • Module Introduction (0:47)
  • What is “Recursion”? (8:36)
  • A Look Under The Hood (11:45)
  • Analyzing Recursion with the Browser DevTools (7:28)
  • Where Recursion Shines (20:52)
  • Quiz: Recursion
  • Module Resources

Closures

  • Module Introduction (0:47)
  • Closures in Theory (4:15)
  • Closures in Practice (2:27)
  • Multiple Environments & Closures (3:22)
  • How Closures Actually Work (5:39)
  • A Special Case (9:37)
  • Quiz: Closures
  • Module Resources

Asynchronous Code

  • Module Introduction (0:38)
  • What is “Async Code”? (5:24)
  • JavaScript is Single-Threaded! (4:17)
  • Callbacks (8:05)
  • Another Callback Example (2:50)
  • Promises (5:35)
  • Promises in Action (11:14)
  • Behind the Scenes of Promises (8:04)
  • Working with “then()” (5:06)
  • Promisifying APIs (3:24)
  • Handling Errors (10:16)
  • Using “catch()” (2:59)
  • Rejecting Promises - Behind the Scenes (3:19)
  • Using async/ await (8:20)
  • Quiz: Async Code
  • Module Resources

The “this” Keyword

  • Module Introduction (0:43)
  • What is “this” about? (6:14)
  • “this” in Action (3:27)
  • How “this” works (4:16)
  • Special & Tricky Cases (10:02)
  • “Fixing” “this”: Helper Variables & bind() (5:48)
  • Working with Arrow Functions (4:22)
  • Quiz: “this”
  • Module Resources

Prototypes & Inheritance

  • Module Introduction (0:41)
  • JavaScript Objects - Refresher (incl. Constructor Functions) (11:19)
  • What are “Prototypes” in JavaScript? (9:43)
  • Understanding Prototypes (5:49)
  • The Prototype Chain (3:15)
  • Setting & Changing Prototypes (3:46)
  • Pre-defining the Prototype on Constructor Functions (6:02)
  • Changing Prototypes (Patching) (6:37)
  • The Default Prototype and “Monkey Patching” (4:18)
  • Prototypes & “this” (2:51)
  • Protoypes, Classes & Methods (9:32)
  • Prototypes and the “constructor” Property (Method) (2:24)
  • Quiz: Prototypes
  • Module Resources

Course Prerequisites

Slightly advanced JavaScript knowledge is required, you don't need to be an expert though

Fair Use Source: https://pro.academind.com/p/javascript-the-tricky-parts

javascript_-_the_tricky_parts_by_maximilian_schwarzmuller.txt · Last modified: 2024/04/28 03:24 (external edit)