This repository was created with the intention of helping developers master their concepts in JavaScript. It is not a requirement, but a guide for future studies. It is based on an article written by Stephen Curtis and you can read it here.
🚀 Considered by GitHub as one of the top open source projects of 2018!
Feel free to submit a PR adding a link to your own recaps or reviews. If you want to translate the repo into your native language, please feel free to do so.
All the translations for this repo will be listed below:
- Shqip (Albanian) — Eldrin Ereqi
- اَلْعَرَبِيَّةُ (Arabic) — Amr Elsekilly
- Български (Bulgarian) - thewebmasterp
- (Arabic) — Amr Elsekilly
- 汉语 (Chinese) — Re Tian
- اَلْعَرَبِيَّةُ(Arabic) — Amr Elsekilly
- Português do Brasil (Brazilian Portuguese) — Tiago Boeing
- 한국어 (Korean) — Suin Lee
- Español (Spanish) — Adonis Mendoza
- Türkçe (Turkish) — İlker Demir
- русский язык (Russian) — Mihail Gumennii
- Tiếng Việt (Vietnamese) — Nguyễn Trần Chung
- Polski (Polish) — Dawid Lipinski
- فارسی (Persian) — Majid Alavizadeh
- Bahasa Indonesia (Indonesian) — Rijdzuan Sampoerna
- Français (French) — Robin Métral
- हिन्दी (Hindi) — Vikas Chauhan
- Ελληνικά (Greek) — Dimitris Zarachanis
- 日本語 (Japanese) — oimo23
- Deutsch (German) — burhannn
- украї́нська мо́ва (Ukrainian) — Andrew Savetchuk
- සිංහල (Sinhala) — Udaya Shamendra
- Italiano (Italian) — Gianluca Fiore
- Malagasy (Madagascar) — Chrys Rakotonimanana
- Latviešu (Latvian) - Jānis Īvāns
- Afaan Oromoo (Oromo) - Amanuel Dagnachew
- ภาษาไทย (Thai) — Arif Waram
- Català (Catalan) — Mario Estrada
- Svenska (Swedish) — Fenix Hongell
- ខ្មែរ (Khmer) — Chrea Chanchhunneng
- አማርኛ (Ethiopian) - Miniyahil Kebede(ምንያህል ከበደ)
- Беларуская мова (Belarussian) — Dzianis Yafimau
- O'zbekcha (Uzbek) — Shokhrukh Usmonov
- Urdu (اردو) — Yasir Nawaz
- Marathi (मराठी) - Dhruv Chandak
- हिन्दी (Hindi) — Mahima Chauhan
- বাংলা (Bengali) — Jisan Mia
- ગુજરાતી (Gujarati) — Vatsal Bhuva
- سنڌي (Sindhi) — Sunny Gandhwani
- भोजपुरी (Bhojpuri) — Pronay Debnath
- ਪੰਜਾਬੀ (Punjabi) — Harsh Dev Pathak
- ಕನ್ನಡ (Kannada) — Shubham Kashyap
- Kiswahili (Swahili) — Bratajit Das
- Call Stack
- Primitive Types
- Value Types and Reference Types
- Implicit, Explicit, Nominal, Structuring and Duck Typing
- == vs === vs typeof
- Function Scope, Block Scope and Lexical Scope
- Expression vs Statement
- IIFE, Modules and Namespaces
- Message Queue and Event Loop
- setTimeout, setInterval and requestAnimationFrame
- JavaScript Engines
- Bitwise Operators, Type Arrays and Array Buffers
- DOM and Layout Trees
- Factories and Classes
- this, call, apply and bind
- new, Constructor, instanceof and Instances
- Prototype Inheritance and Prototype Chain
- Object.create and Object.assign
- map, reduce, filter
- Pure Functions, Side Effects, State Mutation and Event Propagation
- Closures
- High Order Functions
- Recursion
- Collections and Generators
- Promises
- async/await
- Data Structures
- Expensive Operation and Big O Notation
- Algorithms
- Inheritance, Polymorphism and Code Reuse
- Design Patterns
- Partial Applications, Currying, Compose and Pipe
- Clean Code
- Understanding Javascript Call Stack, Event Loops — Gaurav Pandvia
- Understanding the JavaScript Call Stack — Charles Freeborn
- Javascript: What Is The Execution Context? What Is The Call Stack? — Valentino Gagliardi
- What is the JS Event Loop and Call Stack? — Jess Telford
- Understanding Execution Context and Execution Stack in Javascript — Sukhjinder Arora
- How JavaScript Works: An Overview of the Engine, the Runtime, and the Call Stack — Alexander Zlatkov
- How JavaScript Works Under The Hood: An Overview of JavaScript Engine, Heap and, Call Stack — Bipin Rajbhar
- Javascript: the Call Stack explained — Coding Blocks India
- The JS Call Stack Explained In 9 Minutes — Colt Steele
- What is the Call Stack? — Eric Traub
- The Call Stack — Kevin Drumm
- Understanding JavaScript Execution — Codesmith
- The Ultimate Guide to Execution Contexts, Hoisting, Scopes, and Closures in JavaScript — Tyler McGinnis
- What the heck is the event loop anyway? — Philip Roberts
- La PILA DE EJECUCIÓN (Call Stack) de JavaScript — La Cocina del Código
- How JavaScript Code is executed? ❤️& Call Stack — Akshay Saini
- Call Stacks - CS50
- Learn the JavaScript Call Stack - codecupdev
- JavaScript Functions and the Call Stack | How does the Call stack work - Chidre'sTechTutorials
Here are some exercises to help you practice and understand the Call Stack concept. Exercises for the Call Stack:
Exercise 1: Write a simple recursive function and trace its execution in the call stack. This will help you visualize how the call stack works.
Exercise 2: Create a function that simulates asynchronous behavior using setTimeout and observe how it's managed in the call stack.
Exercise 3: Debug a code snippet with a call stack-related issue and identify the problem. This will improve your debugging skills.
Explanation for Exercise 1: In this exercise, you'll dive into the mechanics of the call stack by writing a recursive function. ...
Explanation for Exercise 2: Explore how asynchronous operations are handled in the call stack by creating a function that uses setTimeout. ...
Explanation for Exercise 3: Sharpen your debugging skills by identifying and fixing a call stack-related issue in a code snippet. ...
- Primitive and Non-primitive data-types in JavaScript - GeeksforGeeks
- Javascript variables (Beginner thinking)
- How numbers are encoded in JavaScript — Dr. Axel Rauschmayer
- What You Need to Know About JavaScript Number Type — Max Wizard K
- What Every JavaScript Developer Should Know About Floating Point Numbers — Chewxy
- The Secret Life of JavaScript Primitives — Angus Croll
- Primitive Types — Flow
- (Not) Everything in JavaScript is an Object — Daniel Li
- JavaScript data types and data structures — MDN
- Diving Deeper in JavaScripts Objects — Arfat Salman
- The differences between Object.freeze() vs Const in JavaScript — Bolaji Ayodeji
- Object to primitive conversion — JavaScript.info
- Methods of primitives - Javascript.info
-
Value Types and Reference Types in JavaScript — Programming with Mosh
-
Everything you never wanted to know about JavaScript numbers — Bartek Szopka
-
TIPOS DE DATOS PRIMITIVOS en JAVASCRIPT - La Cocina del Código
Exercise 1: Define Primitive Types
Implement a simple program that defines and uses various primitive data types, such as integers, floats, characters, and booleans. This exercise aims to reinforce your understanding of how to work with these basic data types in your chosen programming language.
Exercise 2: Type Conversions and Casting
Challenge yourself with a more complex task. Write a program that requires you to perform type conversions or casting between different primitive data types. For example, convert an integer to a floating-point number and vice versa. This exercise will deepen your knowledge of data type manipulation.
Exercise 3: Questions on Primitive Types
Create a set of questions related to primitive data types. These questions can include both multiple-choice and open-ended questions. These can be used for self-assessment or in a classroom setting to test your grasp of primitive types in programming.
Explanation for Exercise 1: In this exercise, you'll gain practical experience in using primitive data types, a fundamental concept in programming. This will reinforce your understanding of how these types work in your code.
Explanation for Exercise 2: Working with type conversions and casting is a valuable skill. This exercise will challenge you to handle data type conversions efficiently, which is essential for real-world programming tasks.
Explanation for Exercise 3: Creating questions related to primitive types is a great way to self-assess your knowledge and ensure you have a solid understanding of the basics. It's also useful for educational settings to test students' comprehension of primitive types.
- Explaining Value vs. Reference in Javascript — Arnav Aggarwal
- Primitive Types & Reference Types in JavaScript — Bran van der Meer
- Value Types, Reference Types and Scope in JavaScript — Ben Aston
- Back to roots: JavaScript Value vs Reference — Miro Koczka
- Grasp “By Value” and “By Reference” in JavaScript — Léna Faure
- JavaScript Reference and Copy Variables — Vítor Capretz
- JavaScript Primitive vs Reference Values
- JavaScript by Reference vs. by Value — nrabinowitz
- JavaScript Interview Prep: Primitive vs. Reference Types — Mike Cronin
- JavaScript map vs. forEach: When to Use Each One - Sajal Soni
-
JavaScript - Reference vs Primitive Values/ Types - Academind
-
Value Types and Reference Types in JavaScript - Programming with Mosh
Exercise 1: Value Types Usage
Implement a simple program that demonstrates the use of value types, such as integers, floating-point numbers, and characters. This exercise will help you understand how value types are stored and manipulated in your chosen programming language.
Exercise 2: Reference Types Practice
Challenge yourself with a more complex problem that involves reference types, such as arrays, lists, or custom objects. Write a program that requires you to create and manipulate reference types effectively. This exercise will deepen your knowledge of reference types.
Exercise 3: Questions on Value Types and Reference Types
Create a set of questions related to value types and reference types. These questions can include both multiple-choice and open-ended questions. They can be used for self-assessment or in a classroom setting to test your grasp of how value types and reference types work in programming.
Explanation for Exercise 1: In this exercise, you'll gain practical experience in using value types, understanding how they are stored, and how they behave in your code. This will reinforce your understanding of this essential concept.
Explanation for Exercise 2: Working with reference types is crucial in programming. This exercise will challenge you to create and manipulate reference types effectively, which is essential for real-world programming tasks.
Explanation for Exercise 3: Creating questions related to value types and reference types is an excellent way to self-assess your knowledge and ensure you have a solid understanding of the differences between these types. It's also useful for educational settings to test students' comprehension.
- What you need to know about Javascript's Implicit Coercion — Promise Tochi
- JavaScript Type Coercion Explained — Alexey Samoshkin
- Javascript Coercion Explained — Ben Garrison
- What exactly is Type Coercion in Javascript? - Stack Overflow
- == ? === ??? ...#@^% - Shirmung Bielefeld
- Coercion in Javascript - Hitesh Choudhary
- JavaScript Questions: What is Coercion? - Steven Hancock
- Typing: Static vs Dynamic, Weak vs. Strong - Codexpanse
- EL SISTEMA de TIPOS DE JAVASCRIPT - La Cocina del Código
- Duck Typing in Javascript - Techmaker Studio
Exercise 1: Value Types Usage
Implement a simple program that demonstrates the use of value types, such as integers, floating-point numbers, and characters. This exercise will help you understand how value types are stored and manipulated in your chosen programming language.
Exercise 2: Reference Types Practice
Challenge yourself with a more complex problem that involves reference types, such as arrays, lists, or custom objects. Write a program that requires you to create and manipulate reference types effectively. This exercise will deepen your knowledge of reference types.
Exercise 3: Questions on Value Types and Reference Types
Create a set of questions related to value types and reference types. These questions can include both multiple-choice and open-ended questions. They can be used for self-assessment or in a classroom setting to test your grasp of how value types and reference types work in programming.
Explanation for Exercise 1: In this exercise, you'll gain practical experience in using value types, understanding how they are stored, and how they behave in your code. This will reinforce your understanding of this essential concept.
Explanation for Exercise 2: Working with reference types is crucial in programming. This exercise will challenge you to create and manipulate reference types effectively, which is essential for real-world programming tasks.
Explanation for Exercise 3: Creating questions related to value types and reference types is an excellent way to self-assess your knowledge and ensure you have a solid understanding of the differences between these types. It's also useful for educational settings to test students' comprehension.
- JavaScript Double Equals vs. Triple Equals — Brandon Morelli
- Should I use === or == equality comparison operator in JavaScript? — Panu Pitkamaki
- == vs === JavaScript: Double Equals and Coercion — AJ Meyghani
- Why Use the Triple-Equals Operator in JavaScript? — Louis Lazaris
- What is the difference between == and === in JavaScript? — Craig Buckler
- Why javascript's typeof always return "object"? — Stack Overflow
- Checking Types in Javascript — Toby Ho
- How to better check data types in JavaScript — Webbjocke
- Checking for the Absence of a Value in JavaScript — Tomer Aberbach
- Difference Between == and === in Javascript
- Difference between == and === in JavaScript — GeeksforGeeks
- === vs == Comparision in JavaScript — FreeCodeCamp
Exercise 1: Equality Operators Practice
Implement a simple program that compares values using both ==
and ===
operators. Explore the differences in behavior and results between these operators. This exercise will help you understand how type coercion affects comparisons in your chosen programming language.
Exercise 2: Using typeof for Type Checking
Challenge yourself with a more complex task. Write a program that checks the data type of variables using the typeof
operator. Explore how typeof
can be used for type checking and validation in your code.
Exercise 3: Questions on Comparison Operators
Create a set of questions related to ==
, ===
, and typeof
comparisons. These questions can include both multiple-choice and open-ended questions. Use these to self-assess your knowledge or for educational purposes in a classroom setting.
Explanation for Exercise 1:
In this exercise, you'll get hands-on experience in comparing values using different equality operators. Understanding the nuances between ==
and ===
is vital for making correct comparisons in your code.
Explanation for Exercise 2:
The typeof
operator is a valuable tool for type checking in your programs. This exercise will challenge you to use typeof
effectively and understand its role in checking variable data types.
Explanation for Exercise 3:
Creating questions related to comparison operators is an excellent way to self-assess your knowledge and ensure you have a solid grasp of how ==
, ===
, and typeof
work in JavaScript or your chosen programming language.
- JavaScript Functions — Understanding The Basics — Brandon Morelli
- The battle between Function Scope and Block Scope — Marius Herring
- Var, Let, and Const – What's the Difference?
- Functions in JavaScript - Deepa Pandey
- Emulating Block Scope in JavaScript — Josh Clanton
- The Difference Between Function and Block Scope in JavaScript — Joseph Cardillo
- Function Scopes and Block Scopes in JavaScript — Samer Buna
- Understanding Scope and Context in JavaScript — Ryan Morr
- JavaScript Scope and Closures — Zell Liew
- Understanding Scope in JavaScript — Wissam Abirached
- Understanding Scope in JavaScript ― Hammad Ahmed
- When to use a function declaration vs. a function expression ― Amber Wilkie
- A JavaScript Fundamentals Cheat Sheet: Scope, Context, and “this” ― Alexandra Fren
- Functions / Function scope ― MDN
Exercise 1: Function Scope Exploration
Implement a simple program that demonstrates the concept of function scope. Create a variable inside a function and try to access it from outside the function. This exercise will help you understand how variables are scoped within functions.
Exercise 2: Block Scope Practice
Challenge yourself with a more complex problem that requires you to work with block scope. Create a program with multiple nested blocks (e.g., if statements, loops) and define variables within these blocks. Explore how variable scope changes within and outside these blocks.
Exercise 3: Scope-related Questions
Create a set of questions related to function scope, block scope, and lexical scope. These questions can include both multiple-choice and open-ended questions. Use them for
- All you need to know about Javascript's Expressions, Statements and Expression Statements — Promise Tochi
- Function Expressions vs Function Declarations — Paul Wilkins
- JavaScript Function — Declaration vs Expression — Ravi Roshan
- Function Declarations vs. Function Expressions — Mandeep Singh
- Function Declarations vs. Function Expressions — Anguls Croll
-
Javascript Function Expression Vs Declaration For Beginners — Dev Material
-
The difference between an expression and a statement in JavaScript
-
Expression in javascript | Statement in javascript - Sathelli Srikanth
Exercise 1: Identify Expressions and Statements
Implement a simple program that includes both expressions and statements. Identify and label these expressions and statements in your code. This exercise aims to reinforce your understanding of the fundamental difference between expressions and statements in programming.
Exercise 2: Convert Statements to Expressions
Challenge yourself with a more complex task. Take a program that primarily uses statements and refactor it to use expressions where possible. This exercise will deepen your knowledge of how to make your code more concise and expressive by using expressions effectively.
Exercise 3: Questions on Expressions and Statements
Create a set of questions related to expressions and statements. These questions can include both multiple-choice and open-ended questions. These can be used for self-assessment or in a classroom setting to test your grasp of this fundamental concept in programming.
Explanation for Exercise 1: In this exercise, you'll gain practical experience in identifying expressions and statements, a key distinction in programming. This will help reinforce your understanding of how these two elements work in your code.
Explanation for Exercise 2: Refactoring code is an important skill. This exercise will challenge you to convert statements to expressions, making your code more concise and readable.
Explanation for Exercise 3: Creating questions related to expressions and statements is a great way to self-assess your knowledge and ensure you have a solid understanding of this fundamental concept. It's also useful for educational settings to test students' comprehension of expressions vs. statements.
- Mastering Immediately-Invoked Function Expressions ― Chandra Gundamaraju
- JavaScript Immediately Invoked Function Expression — javascripttutorial.net
- Do ES6 Modules make the case of IIFEs obsolete?
- A 10 minute primer to JavaScript modules, module formats, module loaders and module bundlers ― Jurgen Van de Moere
- Modules ― Exploring JS
- ES modules: A cartoon deep-dive — Lin Clark
- Understanding ES6 Modules — Craig Buckler
- An overview of ES6 Modules in JavaScript — Brent Graham
- ES6 Modules in Depth — Nicolás Bevacqua
- ES6 modules, Node.js and the Michael Jackson Solution — Alberto Gimeno
- JavaScript Modules: A Beginner’s Guide — Preethi Kasireddy
- Using JavaScript modules on the web — Addy Osmani & Mathias Bynens
- IIFE: Immediately Invoked Function Expressions — Parwinder
- Javascript Module Bundlers — Vanshu Hassija
-
Immediately Invoked Function Expression - Beau teaches JavaScript — freeCodeCamp
-
JavaScript IIFE (Immediately Invoked Function Expressions) — Steve Griffith
-## Exercises for Understanding IIFE, Modules, and Namespaces
Exercise 1: Implement an IIFE
Create a simple program that demonstrates the use of an Immediately-Invoked Function Expression (IIFE). This can be a basic code snippet that showcases how IIFE works and its practical applications.
Exercise 2: Modularize Your Code
Challenge yourself with a more complex task. Take an existing project or write a new one and modularize it. Split your code into distinct modules, each addressing a specific aspect of your application. This exercise will help you understand the benefits of modular code structure.
Exercise 3: Namespaces and Organizing Code
Create a program where you use namespaces to organize your code. Implement different namespaces for various parts of your application, demonstrating how they help avoid naming conflicts and keep your code organized.
Exercise 4: Questions on IIFE, Modules, and Namespaces
Create a set of questions related to IIFE, Modules, and Namespaces. These questions can include both multiple-choice and open-ended questions.
- JavaScript Event Loop Explained — Anoop Raveendran
- The JavaScript Event Loop: Explained — Erin Sweson-Healey
- Understanding JS: The Event Loop — Alexander Kondov
- Understanding the JavaScript Event Loop — Ashish Gupta
- The JavaScript Event Loop — Flavio Copes
- How JavaScript works: Event loop — Alexander Zlatkov
- Tasks, microtasks, queues and schedules — Jake Archibald
- Visualising the JavaScript Event Loop with a Pizza Restaurant analogy — Priyansh Jain
- JavaScript Visualized: Event Loop — Lydia Hallie
Exercise 1: Simulate a Message Queue
Implement a simple program that simulates a message queue using your chosen programming language. Create tasks, add them to the queue, and demonstrate how they are executed in the order they are received. This exercise will help you understand the concept of a message queue in a practical way.
Exercise 2: Asynchronous Programming Practice
Challenge yourself with a more complex problem. Write a program that involves asynchronous operations, such as making API requests or reading/writing files. Use the event loop to manage these operations efficiently. This exercise will deepen your understanding of asynchronous programming and the event loop.
Exercise 3: Questions on Message Queue and Event Loop
Create a set of questions related to Message Queue and the Event Loop. These questions can include both multiple-choice and open-ended questions. They are useful for self-assessment or in an educational setting to test your understanding of these concepts.
Explanation for Exercise 1: In this exercise, you'll gain hands-on experience in simulating a message queue, which is a key component of asynchronous programming. You'll see how tasks are managed in the order they are received, helping you grasp the concept.
Explanation for Exercise 2: Asynchronous programming is a fundamental aspect of modern applications. This exercise challenges you to apply the event loop to manage asynchronous operations effectively, which is essential in many real-world scenarios.
Explanation for Exercise 3: Creating questions related to Message Queue and the Event Loop is a valuable way to test your knowledge and ensure you have a strong grasp of these concepts. It's also useful for educational purposes to assess understanding.
- Javascript setTimeout - All you need to know
- setTimeout and setInterval — JavaScript.Info
- Why not to use setInterval — Akanksha Sharma
- setTimeout VS setInterval — Develoger
- Using requestAnimationFrame — Chris Coyier
- Understanding JavaScript's requestAnimationFrame() — JavaScript Kit
- Handling time intervals in JavaScript - Amit Merchant
- Debounce – How to Delay a Function in JavaScript - Ondrej Polesny
-
Javascript: How setTimeout and setInterval works — Coding Blocks India
-
JavaScript setTimeOut and setInterval Explained — Theodore Anderson
Exercise 1: Using setTimeout
Implement a simple program that uses the setTimeout
function to schedule a function to run after a specified delay. This exercise can involve creating a basic animation or executing a task with a delay.
Exercise 2: Repeating Actions with setInterval
Challenge yourself by creating a program that uses setInterval
to repeat an action at regular intervals. This could be a simple clock, a real-time data updater, or any other application that requires periodic execution.
Exercise 3: Animation with requestAnimationFrame
Develop an animation using the requestAnimationFrame
function. Create a smooth and efficient animation that utilizes this browser-native function for rendering. You can create a bouncing ball animation or a more complex graphical display.
Exercise 4: Questions on setTimeout, setInterval, and requestAnimationFrame
Create a set of questions related to setTimeout
, setInterval
, and requestAnimationFrame
. These questions can include both multiple-choice and open-ended questions. They are useful for self-assessment or in an educational setting to test your understanding of these concepts.
Explanation for Exercise 1:
In this exercise, you'll gain practical experience in using setTimeout
to schedule code execution. You'll understand how to add delays to your code and create timed events.
Explanation for Exercise 2:
Using setInterval
is crucial for tasks that need to be repeated. This exercise will help you become proficient in setting up and managing periodic actions in your applications.
Explanation for Exercise 3:
requestAnimationFrame
is essential for smooth animations in web development. This exercise will enhance your skills in creating visually appealing and efficient animations.
Explanation for Exercise 4:
Creating questions related to setTimeout
, setInterval
, and requestAnimationFrame
is a great way to assess your knowledge of these concepts and ensure you have a solid grasp of them. It's also useful for educational purposes to test understanding.
- Is javascript compiled or interpreted language?
- JavaScript Engines — Jen Looper
- Understanding How the Chrome V8 Engine Translates JavaScript into Machine Code — DroidHead
- Understanding V8’s Bytecode — Franziska Hinkelmann
- A Brief History of Google’s V8 Javascript Engine — Clair Smith
- JavaScript essentials: why you should know how the engine works - Rainer Hahnekamp
- JavaScript engine fundamentals: Shapes and Inline Caches
- JavaScript engine fundamentals: optimizing prototypes
- How V8 optimizes array operations
- JavaScript Internals: JavaScript engine, Run-time environment & setTimeout Web API — Rupesh Mishra
-
JavaScript Engines: The Good Parts™ — Mathias Bynens & Benedikt Meurer
-
JS Engine EXPOSED 🔥 Google's V8 Architecture 🚀 | Namaste JavaScript Ep. 16 - Akshay Saini
-
How JavaScript Code is executed? How Javascript works behind the scenes
-
JavaScript Under The Hood - JavaScript Engine Overview - Traversy Media
Exercise 1: Interacting with a JavaScript Engine
Implement a simple program that demonstrates interaction with a JavaScript engine. This can be a basic code snippet that showcases how JavaScript code is executed and processed by an engine.
Exercise 2: Performance Optimization
Challenge yourself with a more complex task. Take an existing JavaScript project or write a new one and focus on performance optimization. Identify parts of your code that can be optimized for execution by a JavaScript engine.
Exercise 3: Understanding Engine Features
Create a set of questions related to JavaScript engines. These questions can include both multiple-choice and open-ended questions. They are useful for self-assessment or in an educational setting to test your understanding of JavaScript engines.
Explanation for Exercise 1: In this exercise, you'll gain practical experience in interacting with a JavaScript engine, which is essential for understanding how JavaScript code is executed and how to work with engine-specific features.
Explanation for Exercise 2: Performance optimization is a critical aspect of working with JavaScript engines, especially in web development. This exercise will challenge you to make your code more efficient and responsive.
Explanation for Exercise 3: Creating questions related to JavaScript engines is a great way to assess your knowledge of how engines work and ensure you have a solid understanding of their features. It's also useful for educational purposes to test understanding.
- Programming with JS: Bitwise Operations — Alexander Kondov
- Using JavaScript’s Bitwise Operators in Real Life — ian m
- JavaScript Bitwise Operators — w3resource
- Bitwise Operators in Javascript — Joe Cha
- A Comprehensive Primer on Binary Computation and Bitwise Operators in Javascript — Paul Brown
- How can I understand Bitwise operation in JavaScript?
-
JS Bitwise Operators and Binary Numbers — Steve Griffith - Prof3ssorSt3v3
-
Deep Dive into Blobs, Files, and ArrayBuffers — Steve Griffith - Prof3ssorSt3v3
Exercise 1: Bitwise Operations Practice
Implement a program that uses various bitwise operators (e.g., AND, OR, XOR, left shift, right shift) to manipulate binary data. This exercise will help you grasp the practical applications of bitwise operations.
Exercise 2: Working with Typed Arrays
Challenge yourself with a more complex task. Create a program that utilizes Typed Arrays to efficiently handle binary data, such as audio or image processing. Explore the benefits of using Typed Arrays over traditional JavaScript arrays.
Exercise 3: Array Buffers and Data Views
Implement a program that uses Array Buffers and Data Views to read and manipulate binary data. This exercise will demonstrate how Array Buffers can be used to share memory efficiently among different views of data.
Exercise 4: Questions on Bitwise Operators, Typed Arrays, and Array Buffers
Create a set of questions related to Bitwise Operators, Typed Arrays, and Array Buffers. These questions can include both multiple-choice and open-ended questions. They are useful for self-assessment or in an educational setting to test your understanding of these concepts.
Explanation for Exercise 1: In this exercise, you'll gain practical experience in using bitwise operators, a fundamental concept in low-level data manipulation. You'll understand how these operations are used for practical purposes.
Explanation for Exercise 2: Typed Arrays are crucial for handling binary data efficiently. This exercise will challenge you to work with them in real-world scenarios, demonstrating their advantages.
Explanation for Exercise 3: Array Buffers and Data Views provide a structured way to manipulate binary data. This exercise will help you understand how to work with them and share memory across different data views.
Explanation for Exercise 4: Creating questions related to Bitwise Operators, Typed Arrays, and Array Buffers is an effective way to assess your knowledge of these concepts and ensure you have a solid grasp of their applications. These questions are also useful for educational purposes to test understanding.
- How To Understand and Modify the DOM in JavaScript — Tania Rascia
- What’s the Document Object Model, and why you should know how to use it — Leonardo Maldonado
- JavaScript DOM Tutorial with Example — Guru99
- What is the DOM? — Chris Coyier
- Traversing the DOM with JavaScript — Zell Liew
- DOM Tree
- How to traverse the DOM in Javascript — Vojislav Grujić
- Render Tree Construction — Ilya Grigorik
- What exactly is the DOM?
- JavaScript DOM
Exercise 1: Manipulate the DOM
Implement a simple program that demonstrates how to manipulate the Document Object Model (DOM) using JavaScript. You can create a basic web page and use JavaScript to change its content, style, or structure.
Exercise 2: Build a Layout Tree
Challenge yourself with a more complex task. Design a web page layout and create a program that builds a layout tree representing the page's structure. This exercise will help you understand how the DOM and layout trees are interconnected.
Exercise 3: Questions on DOM and Layout Trees
Create a set of questions related to the DOM and Layout Trees. These questions can include both multiple-choice and open-ended questions. They are useful for self-assessment or in an educational setting to test your understanding of these concepts.
Explanation for Exercise 1: In this exercise, you'll gain practical experience in manipulating the DOM, a crucial aspect of web development. You'll learn how to change web page content dynamically.
Explanation for Exercise 2: Building a layout tree is essential for understanding how web page elements are structured and presented. This exercise will deepen your knowledge of how the DOM and layout trees work together.
Explanation for Exercise 3: Creating questions related to the DOM and Layout Trees is a valuable way to test your understanding of these concepts. It's also useful for educational purposes to assess knowledge and comprehension.
- How To Use Classes in JavaScript — Tania Rascia
- Javascript Classes — Under The Hood — Majid
- Better JavaScript with ES6, Pt. II: A Deep Dive into Classes ― Peleke Sengstacke
- Understand the Factory Design Pattern in Plain JavaScript — Aditya Agarwal
- Factory Functions in JavaScript — Josh Miller
- The Factory Pattern in JS ES6 — SnstsDev
- Class vs Factory function: exploring the way forward — Cristi Salcescu
- How ES6 classes really work and how to build your own — Robert Grosse
- Understanding
super
in JavaScript - An Easy Guide To Understanding Classes In JavaScript
- JavaScript Factory Functions — Programming with Mosh
- Factory Functions in JavaScript — Fun Fun Function
- Javascript Tutorial Function Factories — Crypto Chan
Under the "Exercises" section, list the exercises for the Factories and Classes concepts:
Exercise 1: Create a Factory Function
Implement a simple program that demonstrates how to create and use a factory function. You can create an object or an instance of a class using a factory function. This exercise will help you understand how factories work in object-oriented programming.
Exercise 2: Design a Class
Challenge yourself with a more complex task. Design a class that represents an object or entity relevant to your programming domain. Instantiate the class and demonstrate how it can be used to model real-world entities. This exercise will deepen your knowledge of class-based object-oriented programming.
Exercise 3: Compare Factories and Classes
Create a program that highlights the differences and similarities between factory functions and classes. Discuss the advantages and disadvantages of each approach. This exercise will help you make informed decisions about when to use factories or classes in your projects.
- Grokking call(), apply() and bind() methods in JavaScript — Aniket Kudale
- How-to: call() , apply() and bind() in JavaScript — Niladri Sekhar Dutta
- JavaScript’s Apply, Call, and Bind Methods are Essential for JavaScript Professionals — Richard Bovell
- Javascript: call(), apply() and bind() — Omer Goldberg
- The difference between call / apply / bind — Ivan Sifrim
- What the hack is call, apply, bind in JavaScript — Ritik
- Mastering 'this' in JavaScript: Callbacks and bind(), apply(), call() — Michelle Gienow
- JavaScript’s apply, call, and bind explained by hosting a cookout — Kevin Kononenko
- How AND When to use bind, call, and apply in Javascript — Eigen X
- Let me explain to you what is
this
. (Javascript) — Jason Yu - Understanding the “this” Keyword in JavaScript — Pavan
- How to understand the keyword this and context in JavaScript — Lukas Gisder-Dubé
- What the heck is this in Javascript? — Hridayesh Sharma
- This and Bind In Javascript — Brian Barbour
- 3 Techniques for Maintaining Your Sanity Using "This" in JavaScript — Carl
- Mastering the JavaScript "this" Keyword — Aakash Srivastav
- This binding in JavaScript – 4. New binding — Spyros Argalias
- A quick intro to 'this' in JavaScript — Natalie Smith
- Explaining JavaScript 'this' to my cat — Andrey K
- A conversation with the 'this' keyword in Javascript — Karen Efereyan
- What are call(), apply() and bind() in JavaScript — Amitav Mishra
- Understanding 'this' binding in JavaScript — Yasemin Cidem
- Top 7 tricky questions of 'this' keyword
-
JavaScript Practical Applications of Call, Apply and Bind functions— techsith
-
Understanding Functions and 'this' In The World of ES2017 — Bryan Hughes
-
bind and this - Object Creation in JavaScript - FunFunFunction
-
JS Function Methods call(), apply(), and bind() — Steve Griffith
Exercise 1: "this" in Different Contexts
Implement a program that explores the behavior of the "this" keyword in various contexts. Create and call functions within different objects, in the global scope, and inside event handlers. This exercise will help you grasp how "this" behaves depending on its context.
Exercise 2: Using "call" and "apply"
Challenge yourself with a complex task. Write a program where you utilize both the "call" and "apply" methods. You can simulate scenarios where these methods are useful, such as borrowing methods from other objects or dynamically passing arguments to functions. This exercise will deepen your understanding of function context manipulation.
Exercise 3: Working with "bind"
Create a program that demonstrates how the "bind" method can be used to set the context of a function. Apply "bind" to functions and use the resulting functions in different contexts. This exercise will reinforce your knowledge of how "bind" helps control the value of "this."
Exercise 4: Questions on "this," "call," "apply," and "bind"
Develop a set of questions related to "this," "call," "apply," and "bind." Include both multiple-choice and open-ended questions. These questions can be used for self-assessment or in a classroom setting to assess your understanding of these concepts.
Explanation for Exercise 1: This exercise is designed to help you understand how the "this" keyword behaves in different scenarios, a fundamental concept in JavaScript and many other programming languages.
Explanation for Exercise 2: Working with "call" and "apply" is a practical skill. This exercise challenges you to use these methods effectively, which is valuable for more advanced programming tasks.
Explanation for Exercise 3: The "bind" method is a powerful tool for managing the value of "this" in functions. This exercise will solidify your understanding of how to use "bind" effectively.
Explanation for Exercise 4: Creating questions related to "this," "call," "apply," and "bind" is an excellent way to test your knowledge of these concepts and ensure you have a strong grasp of how they work in JavaScript.
-
JavaScript For Beginners: the ‘new’ operator — Brandon Morelli
-
Beyond
typeof
andinstanceof
: simplifying dynamic type checks — Dr. Axel Rauschmayer
Exercise 1: Creating Instances with "new" and Constructors
Implement a simple program that demonstrates the use of the "new" keyword to create instances of custom Constructors. Create a Constructor function, instantiate objects using "new," and access their properties and methods.
Exercise 2: Using "instanceof" for Type Checking
Challenge yourself with a problem where you need to check the type of an object. Write a program that utilizes the "instanceof" operator to determine if an object belongs to a specific class or constructor function.
Exercise 3: Working with Instances
Create a more extensive project that requires working with multiple instances of custom Constructor functions. This could involve creating a mini-application, managing different objects, and demonstrating their interactions.
Exercise 4: Questions on "new," "Constructor," "instanceof," and Instances
Create a set of questions related to these concepts. These questions can include both multiple-choice and open-ended questions. These can be used for self-assessment or in a classroom setting to test your comprehension of these JavaScript concepts.
Explanation for Exercise 1: In this exercise, you'll practice using the "new" keyword to create instances and constructors. This is a fundamental concept in object-oriented programming, and it's essential to understand how it works.
Explanation for Exercise 2: Using "instanceof" is a valuable technique for type checking in JavaScript. This exercise will challenge you to apply it to real-world scenarios where you need to identify object types.
Explanation for Exercise 3: Working with multiple instances is a common task in programming. This exercise allows you to create a more extensive project, providing practical experience in managing objects and their interactions.
Explanation for Exercise 4: Creating questions related to these concepts is a great way to self-assess your knowledge and ensure you have a solid understanding of "new," "Constructor," "instanceof," and instances in JavaScript.
- Javascript : Prototype vs Class — Valentin PARSY
- JavaScript engine fundamentals: optimizing prototypes — Mathias Bynens
- JavaScript Prototype — NC Patro
- Prototype in Javascript — Sandeep Ranjan
- Prototypes in JavaScript — Rupesh Mishra
- Prototype in JavaScript: it’s quirky, but here’s how it works — Pranav Jindal
- Understanding JavaScript: Prototype and Inheritance — Alexander Kondov
- Understanding Classes (ES5) and Prototypal Inheritance in JavaScript — Hridayesh Sharma
- prototype, proto and Prototypal inheritance in JavaScript — Varun Dey
- Prototypal Inheritance — JavaScript.Info
- How To Work with Prototypes and Inheritance in JavaScript — Tania Rascia
- Master JavaScript Prototypes & Inheritance — Arnav Aggarwal
- JavaScript’s Prototypal Inheritance Explained Using CSS — Nash Vail
- Prototypal Inheritance in JavaScript — Jannis Redmann
- Demystifying ES6 Classes And Prototypal Inheritance ― Neo Ighodaro
- Intro To Prototypal Inheritance — Dharani Jayakanthan
- Let’s Build Prototypal Inheritance in JS — var-che
- Objects, Prototypes and Classes in JavaScript — Atta
- The magical world of JavaScript prototypes — Belén
- Understanding Prototypal Inheritance In JavaScript — Lawrence Eagles
- Objects and Prototypes in JavaScript — Irena Popova
-
JavaScript Prototype Inheritance Explained pt. II — techsith
-
An Overview Of Classical Javascript Classes and Prototypal Inheritance — Pentacode
-
A Beginner's Guide to Javascript's Prototype — Tyler Mcginnis
-
Prototypes in Javascript - p5.js Tutorial — The Coding Train
Exercise 1: Prototypal Inheritance
Implement a simple program that demonstrates prototypal inheritance in your chosen programming language. Create a base object and a derived object that inherits from the base object's prototype. This exercise aims to reinforce your understanding of how prototype inheritance works.
Exercise 2: Using the Prototype Chain
Challenge yourself with a more complex problem that requires the application of the prototype chain. Create a hierarchy of objects with different methods and properties, and then demonstrate how objects in the hierarchy can access and override methods and properties. This exercise will deepen your knowledge of the prototype chain.
Exercise 3: Questions on Prototype Inheritance
Create a set of questions related to prototype inheritance and the prototype chain. These questions can include both multiple-choice and open-ended questions. These can be used for self-assessment or in a classroom setting to test your grasp of this concept.
Explanation for Exercise 1: This exercise provides hands-on experience with prototypal inheritance, a core concept in many programming languages. By creating base and derived objects, you'll reinforce your understanding of how objects inherit properties and methods from their prototypes.
Explanation for Exercise 2: Working with a complex hierarchy of objects and demonstrating the prototype chain's behavior is an excellent way to deepen your understanding of how objects access and override methods and properties in a prototype-based language.
Explanation for Exercise 3: Creating questions related to prototype inheritance is a valuable way to self-assess your knowledge. It ensures you have a solid understanding of this concept and can apply it effectively in real-world coding scenarios.
- Object.create in JavaScript — Rupesh Mishra
- Object.create(): the New Way to Create Objects in JavaScript — Rob Gravelle
- Basic Inheritance with Object.create — Joshua Clanton
- Object.create() In JavaScript — GeeksforGeeks
- Understanding the difference between Object.create() and the new operator — Jonathan Voxland
- JavaScript Object Creation: Patterns and Best Practices — Jeff Mott
- Dealing With Objects in JavaScript With Object.assign, Object.keys and hasOwnProperty
- Copying Objects in JavaScript ― Orinami Olatunji
- JavaScript: Object.assign() — Thiago S. Adriano
- How to deep clone a JavaScript Object — Flavio Copes
- Object.create(): When and Why to Use — VZing
Exercise 1: Creating Objects with Object.create
Implement a program that uses Object.create
to create objects with a specified prototype. Explore how to set properties and methods on these objects. This exercise will help you understand the concept of prototypal inheritance.
Exercise 2: Object Cloning with Object.assign
Challenge yourself with a more complex task. Write a program that involves cloning objects using Object.assign
. You can start with a source object and create a copy or merge multiple objects into a new one. This exercise will deepen your knowledge of object cloning and merging.
Exercise 3: Questions on Object.create and Object.assign
Create a set of questions related to the concepts of "Object.create" and "Object.assign." These questions can include both multiple-choice and open-ended questions. Use these questions for self-assessment or in a classroom setting to test your understanding of these object-related operations.
Explanation for Exercise 1:
In this exercise, you'll gain hands-on experience in creating objects with Object.create
and exploring the principles of prototypal inheritance. This is essential for mastering object-oriented programming in JavaScript.
Explanation for Exercise 2: Object cloning and merging are common tasks in JavaScript. This exercise will challenge you to efficiently clone or merge objects using `Object.assign," a valuable skill for real-world programming.
Explanation for Exercise 3: Creating questions related to "Object.create" and "Object.assign" will help you assess your knowledge of these concepts and ensure you have a solid understanding of how to work with objects in JavaScript.
- JavaScript Functional Programming — map, filter and reduce — Bojan Gvozderac
- Learn map, filter and reduce in Javascript — João Miguel Cunha
- JavaScript’s Map, Reduce, and Filter — Dan Martensen
- How to Use Map, Filter, & Reduce in JavaScript — Peleke Sengstacke
- JavaScript — Learn to Chain Map, Filter, and Reduce — Brandon Morelli
- Javascript data structure with map, reduce, filter and ES6 — Deepak Gupta
- Understanding map, filter and reduce in Javascript — Luuk Gruijs
- Functional Programming in JS: map, filter, reduce (Pt. 5) — Omer Goldberg
- JavaScript: Map, Filter, Reduce — William S. Vincent
- Arrow Functions: Fat and Concise Syntax in JavaScript — Kyle Pennell
- JavaScript: Arrow Functions for Beginners — Brandon Morelli
- When (and why) you should use ES6 arrow functions — and when you shouldn’t — Cynthia Lee
- JavaScript — Learn & Understand Arrow Functions — Brandon Morelli
- (JavaScript )=> Arrow functions — sigu
- Javascript.reduce() — Paul Anderson
- Why you should replace forEach with map and filter in JavaScript — Roope Hakulinen
- Simplify your JavaScript – Use .map(), .reduce(), and .filter() — Etienne Talbot
- JavaScript’s Reduce Method Explained By Going On a Diet — Kevin Kononenko
- Difference between map, filter and reduce in JavaScript — Amirata Khodaparast
- Map⇄Filter⇄Reduce↻ — ashay mandwarya
- Finding Your Way With .map() — Brandon Wozniewicz
- How to write your own map, filter and reduce functions in JavaScript — Hemand Nair
- How to Manipulate Arrays in JavaScript — Bolaji Ayodeji
- How to simplify your codebase with map(), reduce(), and filter() in JavaScript — Alex Permyakov
- .map(), .filter(), and .reduce() — Andy Pickle
- Map/Filter/Reduce Crash Course — Chris Achard
- Map, Filter and Reduce – Animated — JavaScript Teacher
- Map, Filter, Reduce and others Arrays Iterators You Must Know to Become an Algorithms Wizard — Mauro Bono
- How to Use JavaScript’s .map, .filter, and .reduce — Avery Duffin
- Javascript performance test - for vs for each vs (map, reduce, filter, find) — Deepak Gupta
- Using .map(), .filter() and .reduce() properly — Sasanka Kudagoda
- Mastering the JavaScript Reduce method ✂️ — sanderdebr
- JavaScript Map – How to Use the JS .map() Function (Array Method) — FreeCodeCamp
-
Functional JavaScript: Map, forEach, Reduce, Filter — Theodore Anderson
-
JavaScript Array superpowers: Map, Filter, Reduce (part I) — Michael Rosata
-
JavaScript Array superpowers: Map, Filter, Reduce (part 2) — Michael Rosata
-
JavaScript Higher Order Functions - Filter, Map, Sort & Reduce — Epicop
-
Arrow functions in JavaScript - What, Why and How — Fun Fun Function
-
Learning Functional Programming with JavaScript — Anjana Vakil - JSUnconf
-
Reduce basics - Part 3 of FP in JavaScript - Fun Fun Function
-
Reduce Advanced - Part 4 of FP in JavaScript - Fun Fun Function
Exercise 1: Using map
Implement a simple program that uses the map
function to transform an array of elements. For example, you can use map
to double all the numbers in an array. This exercise is designed to reinforce your understanding of how map
works and how it can be applied.
Exercise 2: Applying reduce
Challenge yourself with a more complex problem that requires the application of the reduce
function. Write a program that uses reduce
to calculate the sum or product of an array's elements. This exercise will deepen your knowledge of reduce
and its applications.
Exercise 3: Utilizing filter
Create a program that utilizes the filter
function to extract specific elements from an array. For instance, you can filter out all even numbers or all names starting with a particular letter. This exercise aims to enhance your skills in using filter
effectively.
Exercise 4: Questions on map, reduce, and filter
Create a set of questions related to the concepts of map
, reduce
, and filter
. These questions can include both multiple-choice and open-ended questions. Use them for self-assessment or in educational settings to test your understanding of these functions.
Explanation for Exercise 1:
This exercise provides hands-on experience in using the map
function to transform data in an array. It helps solidify your understanding of how to apply map
effectively.
Explanation for Exercise 2:
Working on a problem that requires reduce
is a valuable exercise. It deepens your understanding of how to use reduce
for various operations, such as calculating sums or products.
Explanation for Exercise 3:
By creating a program that utilizes the filter
function, you gain practical experience in extracting specific data from an array, a common use case in data manipulation.
Explanation for Exercise 4:
Creating questions related to map
, reduce
, and filter
is a useful tool for self-assessment or classroom settings. It allows you to test your comprehension of these important array manipulation functions.
- Javascript and Functional Programming — Pure Functions — Omer Goldberg
- Master the JavaScript Interview: What is a Pure Function? — Eric Elliott
- JavaScript: What Are Pure Functions And Why Use Them? — James Jeffery
- Pure functions in JavaScript — @nicoespeon
- Functional Programming: Pure Functions — Arne Brasseur
- Pure Functions In Javascript — Krunal
- Making your JavaScript Pure — Jack Franklin
- Arrays, Objects and Mutations — Federico Knüssel
- The State of Immutability — Maciej Sikora
- Hablemos de Inmutabilidad — Kike Sanchez
- How to deal with dirty side effects in your pure functional JavaScript — James Sinclair
- Preventing Side Effects in JavaScript — David Walsh
- Wielding Pure Functions in JavaScript and Function Composition — Peleke Sengstacke
- JavaScript: Pure Functions — William S. Vincent
- Functional programming paradigms in modern JavaScript: Pure functions — Alexander Kondov
- Understanding Javascript Mutation and Pure Functions — Chidume Nnamdi
- Functional-ish JavaScript — Daniel Brain
- Event Propagation — MDN
- Event Propagation — Bubbling and capturing
- Pure Functions — Hexlet
- Pure Functions - Functional Programming in JavaScript — Paul McBride
- JavaScript Pure Functions — Seth Alexander
- JavaScript Pure vs Impure Functions Explained — Theodore Anderson
- Pure Functions - Programação Funcional: Parte 1 - Fun Fun Function
- Event Propagation - JavaScript Event Bubbling and Propagation - Steve Griffith
Exercises for Pure Functions:
Exercise 1: Implement a simple program using Pure Functions. Create a function that takes input and returns an output, without affecting external state. This reinforces the idea of purity.
Exercise 2: Challenge yourself with a more complex problem. Write a series of Pure Functions to solve a problem without altering any external variables or state.
Exercise 3: Create a set of questions related to Pure Functions. These can be used for self-assessment or in a classroom setting. Include both multiple-choice and open-ended questions.
Exercises for Side Effects:
Exercise 1: Identify side effects in an existing codebase. Analyze a piece of code and identify any side effects that may be present.
Exercise 2: Write a function with side effects. Create a function that intentionally produces side effects. Discuss the consequences of these effects on the program.
Exercise 3: Explore mitigating side effects. Propose ways to reduce or eliminate side effects in code, focusing on creating more predictable behavior.
Exercises for State Mutation:
Exercise 1: Modify a variable's state. Create a program that involves state mutation. Observe the implications of altering the state directly.
Exercise 2: Implement a state management solution. Apply a state management pattern (e.g., Redux, Mobx) to handle state changes more predictably.
Exercise 3: Design a scenario with minimal state mutation. Challenge yourself to design a program where state mutations are kept to a minimum, emphasizing immutability.
Exercises for Event Propagation:
Exercise 1: Build an event-driven application. Create a simple event-driven program where different components communicate using event propagation.
Exercise 2: Investigate event bubbling and capturing. Explore the concepts of event propagation in the context of the DOM and explain the differences between event bubbling and capturing.
Exercise 3: Solve a real-world problem using event propagation. Tackle a more complex problem by designing a solution that relies on event propagation to handle various events and interactions.
... (repeat the structure for other concepts)
- I never understood JavaScript closures — Olivier De Meulder
- Understand JavaScript Closures With Ease — Richard Bovell
- Understanding JavaScript Closures — Codesmith
- Understand Closures in JavaScript — Brandon Morelli
- A simple guide to help you understand closures in JavaScript — Prashant Ram
- Understanding JavaScript Closures: A Practical Approach — Paul Upendo
- Understanding JavaScript: Closures — Alexander Kondov
- How to use JavaScript closures with confidence — Léna Faure
- JavaScript closures by example — tyler
- JavaScript — Closures and Scope — Alex Aitken
- Discover the power of closures in JavaScript — Cristi Salcescu
- Getting Closure — RealLifeJS
- Closure, Currying and IIFE in JavaScript — Ritik
- Understanding Closures in JavaScript — Sukhjinder Arora
- A basic guide to Closures in JavaScript — Parathan Thiyagalingam
- Closures: Using Memoization — Brian Barbour
- A Brief Introduction to Closures and Lexical Scoping in JavaScript — Ashutosh K Singh
- Demystify Closures — stereobooster
- Scopes and Closures - JavaScript Concepts — Agney Menon
- Understanding Closures in JavaScript — Matt Popovich
- whatthefuck.is · A Closure - Dan Abramov
- Closures in JavaScript can... - Brandon LeBoeuf
- Do you know Closures - Mohamed Khaled
-
JavaScript The Hard Parts: Closure, Scope & Execution Context - Codesmith
-
JavaScript Closures 101: What is a closure? — JavaScript Tutorials
-
CLOSURES en JavaScript: Qué son y cómo funcionan - Carlos Azaustre
Exercises for Closures:
Exercise 1: Write a function that uses a closure to maintain a counter. The function should return the current count, and you should be able to increment it with each call. This exercise will help you understand how closures encapsulate state.
Exercise 2: Create a closure that generates a unique identifier for each call. You can use this identifier to label items in a list or provide unique keys for elements in a web page.
Exercise 3: Develop a function that takes advantage of closures to create a private variable, which can only be modified by the functions within the closure. This exercise demonstrates the concept of data encapsulation with closures.
- Higher-Order Functions in JavaScript — M. David Green
- Higher Order Functions: Using Filter, Map and Reduce for More Maintainable Code — Guido Schmitz
- First-class and Higher Order Functions: Effective Functional JavaScript — Hugo Di Francesco
- Higher Order Functions in JavaScript — John Hannah
- Just a reminder on how to use high order functions — Pedro Filho
- Understanding Higher-Order Functions in JavaScript — Sukhjinder Arora
- Higher Order Functions - A pragmatic approach — emmanuel ikwuoma
-
Part 1: An Introduction to Callbacks and Higher Order Functions - Codesmith
-
Part 2: Understanding Why We Need Higher Order Functions - Codesmith
-
Higher-Order Functions ft. Functional Programming - Akshay Saini
-
Exercises for High Order Functions:
Exercise 1: Implement a simple program using High Order Functions. This can be a basic example or a small project to reinforce understanding.
Exercise 2: Challenge yourself with a more complex problem that requires the application of High Order Functions. It could be a problem-solving task or a larger project.
Exercise 3: Create a set of questions related to High Order Functions. These questions can be used for self-assessment or in a classroom setting. Include both multiple-choice and open-ended questions.
- Recursion in JavaScript — Kevin Ennis
- Understanding Recursion in JavaScript — Zak Frisch
- Learn and Understand Recursion in JavaScript — Brandon Morelli
- Recursion in Functional JavaScript — M. David Green
- Programming with JS: Recursion — Alexander Kondov
- Anonymous Recursion in JavaScript — simo
- Recursion, iteration and tail calls in JS — loverajoel
- What is Recursion? A Recursive Function Explained with JavaScript Code Examples — Nathan Sebhastian
- Intro to Recursion — Brad Newman
- Accio Recursion!: Your New Favorite JavaScript Spell — Leanne Cabey
- Recursion Explained (with Examples) — Christina
-
Javascript Tutorial 34: Introduction To Recursion — codedamn
-
Recursion, Iteration, and JavaScript: A Love Story | JSHeroes 2018 — Anjana Vakil
-
Exercises for Recursion:
Exercise 1: Implement a simple program using recursion. This could be a basic code snippet that calculates the factorial of a number or computes the Fibonacci sequence. It's a practical way to reinforce your understanding of recursive functions.
Exercise 2: Challenge yourself with a more complex problem that requires the application of recursion. Consider creating a recursive function that solves a complex mathematical problem or navigates a data structure. This will deepen your comprehension of recursive techniques.
Exercise 3: Create a set of questions related to recursion. These questions can be multiple-choice or open-ended and should assess your knowledge of recursion, its strengths, and best practices. Use these questions for self-assessment or in an educational setting.
- ES6 In Depth: Collections — Jason Orendorff
- ES6 Collections: Using Map, Set, WeakMap, WeakSet — Kyle Pennell
- ES6 WeakMaps, Sets, and WeakSets in Depth — Nicolás Bevacqua
- Map, Set, WeakMap and WeakSet — JavaScript.Info
- Maps in ES6 - A Quick Guide — Ben Mildren
- ES6 — Set vs Array — What and when? — Maya Shavin
- ES6 — Map vs Object — What and when? — Maya Shavin
- ES6: Working with Sets in JavaScript — Dead Code Rising
- Array vs Set vs Map vs Object — Real-time use cases in Javascript (ES6/ES7) — Rajesh Babu
- How to create an array of unique values in JavaScript using Sets — Claire Parker-Jones
- What You Should Know About ES6 Maps — Just Chris
- ES6 Maps in Depth — Nicolás Bevacqua
- What are JavaScript Generators and how to use them — Vladislav Stepanov
- Understanding JavaScript Generators With Examples — Arfat Salman
- The Basics of ES6 Generators — Kyle Simpson
- An Introduction to JavaScript Generators — Alice Kallaugher
-Exercises for Collections and Generators:
Exercise 1: Implement a simple program using Collections and Generators. This can be a basic code snippet that demonstrates the creation and usage of collections or generators. This exercise will help you get familiar with the basics.
Exercise 2: Challenge yourself with a more complex problem that requires the application of Collections and Generators. This could be a task where you need to manipulate and process data using these concepts.
Exercise 3: Create a set of questions related to Collections and Generators. These questions can be both multiple-choice and open-ended and should assess your knowledge of these concepts. These questions can be used for self-assessment or in a classroom setting.
- JavaScript Promises for Dummies ― Jecelyn Yeen
- Understanding promises in JavaScript — Gokul N K
- Master the JavaScript Interview: What is a Promise? — Eric Elliott
- An Overview of JavaScript Promises — Sandeep Panda
- How to use Promises in JavaScript — Prashant Ram
- Implementing Promises In JavaScript — Maciej Cieslar
- JavaScript: Promises explained with simple real life analogies — Shruti Kapoor
- Promises for Asynchronous Programming — Exploring JS
- JavaScript Promises Explained By Gambling At A Casino — Kevin Kononenko
- ES6 Promises: Patterns and Anti-Patterns — Bobby Brennan
- A Simple Guide to ES6 Promises — Brandon Morelli
- The ES6 Promises — Manoj Singh Negi
- ES6 Promises in Depth — Nicolás Bevacqua
- Playing with Javascript Promises: A Comprehensive Approach — Rajesh Babu
- How to Write a JavaScript Promise — Brandon Wozniewicz
- A Coding Writer’s Guide: An Introduction To ES6 Promises — Andrew Ly
- Understanding Promises in JavaScript — Chris Noring
- Converting callbacks to promises — Zell Liew
- JavaScript Promises: Zero To Hero Plus Cheat Sheet — Joshua Saunders
- Promises - JavaScript concepts — Agney Menon
- Javascript
Promise
101 — Igor Irianto - Simplify JavaScript Promises — Sunny Singh
- The Lowdown on Promises — Aphinya Dechalert
- JavaScript Visualized: Promises & Async/Await — Lydia Hallie
- Promises in JavaScript — Peter Klingelhofer
- Best Practices for ES6 Promises — Basti Ortiz
- Lo que debemos saber de EScript 2020 — Kike Sanchez
- Promise Basics - javascript.info
- The Complete JavaScript Promise Guide
-
Promises Part 1 - Topics of JavaScript/ES6 — The Coding Train
-
Promises | Ep 02 Season 02 - Namaste JavaScript - Akshay Saini
-
Exercises for Promises:
Exercise 1: Implement a simple program using Promises. This can be a basic code snippet that demonstrates the use of a Promise to handle asynchronous tasks, such as simulating a delayed operation or fetching data from an API.
Exercise 2: Challenge yourself with a more complex problem that requires the application of Promises. Create a project where you perform multiple asynchronous operations using Promises, such as making multiple API requests and handling the results.
Exercise 3: Create a set of questions related to Promises. These questions can include both multiple-choice and open-ended questions. They should test your understanding of how Promises work, how to handle Promise rejections, and how to chain multiple Promises. These questions can be used for self-assessment or in a classroom setting.
- Eloquent JavaScript, 3rd Edition: Ch. 11 - Asynchronous Programming
- Exploring JS: Asynchronous Programming
- Understanding async/await in Javascript — Gokul N K
- Asynchronous Javascript using async/await — Joy Warugu
- Modern Asynchronous JavaScript with async/await — Flavio Copes
- Asynchronous JavaScript: From Callback Hell to Async and Await — Demir Selmanovic
- Javascript — ES8 Introducing async/await Functions — Ben Garrison
- How to escape async/await hell — Aditya Agarwal
- Understanding JavaScript’s async await — Nicolás Bevacqua
- JavaScript Async/Await: Serial, Parallel and Complex Flow — TechBrij
- From JavaScript Promises to Async/Await: why bother? — Chris Nwamba
- Flow Control in Modern JS: Callbacks to Promises to Async/Await — Craig Buckler
- JavaScript: Promises and Why Async/Await Wins the Battle — Nick Parsons
- How to improve your asynchronous Javascript code with async and await — Indrek Lasn
- Making Fetches Easy With Async Await — Mickey Sheridan
- 7 Reasons Why JavaScript Async/Await Is Better Than Plain Promises — Mostafa Gaafar
- Asynchronous Operations in JavaScript — Jscrambler
- JavaScript: Promises or async-await — Gokul N K
- Async / Await: From Zero to Hero — Zhi Yuan
- JavaScript Visualized: Promises & Async/Await — Lydia Hallie
- Making asynchronous programming easier with async and await — MDN
- JavaScript Async/Await Tutorial – Learn Callbacks, Promises, and Async/Await in JS by Making Ice Cream
- Better Than Promises - JavaScript Async/Await
-
async/await in JavaScript - What, Why and How — Fun Fun Function
-
async/await Part 1 - Topics of JavaScript/ES8 — The Coding Train
-
async/await Part 2 - Topics of JavaScript/ES8 — The Coding Train
-
Exercises for async/await:
Exercise 1: Implement a simple program using async/await. This can be a basic code snippet that demonstrates asynchronous programming with async
functions and await
. You can create a simple asynchronous task, such as fetching data from an API or reading a file.
Exercise 2: Challenge yourself with a more complex problem that requires the application of async/await. It could be a problem-solving task, like making multiple parallel API requests and processing the results using async/await. This exercise will deepen your understanding of handling asynchronous operations.
Exercise 3: Create a set of questions related to async/await. These questions can be multiple-choice or open-ended and should test your knowledge of how to work with asynchronous code, error handling, and best practices with async/await. These questions can be used for self-assessment or in a classroom setting.
- Data Structures in JavaScript — Thon Ly
- Algorithms and Data Structures in JavaScript — Oleksii Trekhleb
- Data Structures: Objects and Arrays ― Chris Nwamba
- Data structures in JavaScript — Benoit Vallon
- Playing with Data Structures in Javascript — Anish K.
- The Little Guide of Queue in JavaScript — Germán Cutraro
- All algorithms writing with JavaScript in the book 'Algorithms Fourth Edition'
- Collection of classic computer science paradigms in JavaScript
- All the things you didn't know you wanted to know about data structures
- JavaScript Data Structures: 40 Part Series — miku86
- Data Structures: Understanding Graphs — Rachel Hawa
- Data Structures Two Ways: Linked List (Pt 1) — Freddie Duffield
- Data Structures Two Ways: Linked List (Pt 2) — Freddie Duffield
- Graph Data Structures Explained in JavaScript — Adrian Mejia
-
Algorithms In Javascript | Ace Your Interview — Eduonix Learning Solutions
-
Learning JavaScript Data Structures and Algorithms: Sorting — Packt Video
-
Exercises for High Order Functions:
Exercise 1: Implement a simple program using High Order Functions. This can be a basic code snippet that uses functions like map
, filter
, or reduce
to operate on an array of numbers. This exercise will help you get familiar with these functions and their usage.
Exercise 2: Take on a more complex problem that necessitates the application of High Order Functions. You could, for instance, write a program that filters and processes data from a JSON dataset using these functions. This will deepen your understanding of how to use High Order Functions for practical tasks.
Exercise 3: Create a set of questions related to High Order Functions. These questions can be multiple-choice or open-ended and should test your knowledge of how High Order Functions work and how they can be used in real-world scenarios. These questions can be used for self-assessment or in a classroom setting.
- Big O Notation in Javascript — César Antón Dorantes
- Time Complexity/Big O Notation — Tim Roberts
- Big O in JavaScript — Gabriela Medina
- Big O Search Algorithms in JavaScript — Bradley Braithwaite
- Algorithms in plain English: time complexity and Big-O Notation — Michael Olorunnisola
- An Introduction to Big O Notation — Joseph Trettevik
-
JavaScript: Intro to Big O Notation and Function Runtime — Eric Traub
-
JavaScript Algorithms Crash Course: Learn Algorithms & "Big O" from the Ground Up! - Academind
-
Big O Notation - Data Structures and Algorithms in Javascript - RoadSideCoder
-
Exercises for Expensive Operation and Big O Notation:
Exercise 1: Implement a simple program using Expensive Operation and Big O Notation. This can be a basic code snippet or a small project to illustrate the concept. Focus on a real-world scenario where efficient algorithms are crucial.
Exercise 2: Challenge yourself with a more complex problem that requires the application of Expensive Operation and understanding Big O Notation. Develop a program that solves a computational problem, and analyze its time and space complexity.
Exercise 3: Create a set of questions related to Expensive Operation and Big O Notation. These questions can be used for self-assessment or in a classroom setting. Include both multiple-choice and open-ended questions. Test your knowledge of how to analyze algorithm efficiency and choose the most suitable data structures for various scenarios.
- Data Structures and Algorithms using ES6
- Algorithms and data structures implemented in JavaScript with explanations and links to further readings
- JS: Interview Algorithm
- Algorithms in JavaScript — Thon Ly
- JavaScript Objects, Square Brackets and Algorithms — Dmitri Grabov
- Atwood's Law applied to CS101 - Classic algorithms and data structures implemented in JavaScript
- Data Structures and Algorithms library in JavaScript
- Collection of computer science algorithms and data structures written in JavaScript
- Algorithms and Data Structures in JavaScript — Oleksii Trekhleb
-
🎥 Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges - FreeCodeCamp
-
🎥 Data Structures and Algorithms in Javascript | DSA with JS - RoadsideCoder
Exercises for Algorithms:
Exercise 1: Implement a simple algorithm using the principles of Algorithms. This can be a basic code snippet that demonstrates an algorithm for sorting, searching, or other common operations. This exercise will help you grasp the fundamental concepts of Algorithms.
Exercise 2: Take on a more complex problem that requires the application of Algorithmic thinking. You could, for instance, implement a more advanced sorting algorithm like QuickSort or solve a challenging problem using dynamic programming. This exercise will deepen your understanding of how to apply advanced algorithms in practical scenarios.
Exercise 3: Create a set of questions related to Algorithms. These questions can be multiple-choice or open-ended and should test your knowledge of different types of algorithms, their time complexity, and when to use them. These questions can be used for self-assessment or in a classroom setting.
- Inheritance in JavaScript — Rupesh Mishra
- Simple Inheritance with JavaScript — David Catuhe
- JavaScript — Inheritance, delegation patterns and Object linking — NC Patro
- Object Oriented JavaScript: Polymorphism with examples — Knoldus Blogs
- Program Like Proteus — A beginner’s guide to polymorphism in Javascript — Sam Galson
- Object-oriented JavaScript: A Deep Dive into ES6 Classes — Jeff Mott
- Unlocking the Power of Polymorphism in JavaScript: A Deep Dive
-
Exercises for Inheritance in JavaScript:
Exercise 1: Implement a simple program using Inheritance in JavaScript. This can be a basic code snippet that demonstrates inheritance between two classes. For example, you can create a Person
and Student
class to showcase inheritance.
Exercise 2: Challenge yourself with a more complex problem that requires the application of Inheritance in JavaScript. This could involve multiple levels of inheritance. Create a scenario, like a class hierarchy for shapes or vehicles, and demonstrate inheritance in a real-world context.
Exercise 3: Create a set of questions related to Inheritance in JavaScript. These questions can be multiple-choice or open-ended and should test your knowledge of how inheritance works in JavaScript. These questions can be used for self-assessment or in a classroom setting.
- Learning JavaScript Design Patterns — Addy Osmani
- Pro JavaScript Design Patterns — Ross Harmes and Dustin Diaz
- JavaScript Design Patterns – Explained with Examples — Germán Cocca
- 4 JavaScript Design Patterns You Should Know — Devan Patel
- JavaScript Design Patterns – Beginner's Guide to Mobile Web Development — Soumyajit Pathak
- JavaScript Design Patterns — Akash Pal
- Javascript Design Patterns: What They Are & How To Use Them — Patrick Simpson
- JavaScript Design Patterns: Understanding Design Patterns in JavaScript - Sukhjinder Arora
- All the 23 (GoF) design patterns implemented in Javascript — Felipe Beline
- The Power of the Module Pattern in JavaScript — jsmanifest
- Design Patterns for Developers using JavaScript pt. I — Oliver Mensah
- Design Patterns for Developers using JavaScript pt. II — Oliver Mensah
- Design patterns in modern JavaScript development
- Understanding Design Patterns: Iterator using Dev.to and Medium social networks! — Carlos Caballero
- JavaScript Design Patterns - Factory Pattern — KristijanFištrek
- JavaScript Design Pattern — Module Pattern - Factory Pattern — Moon
- Design Patterns: Null Object - Carlos Caballero
- Strategy Pattern - Francesco Ciulla
- Adapter Pattern - Francesco Ciulla
- The Power of Composite Pattern in JavaScript - jsmanifest
- In Defense of Defensive Programming - Adam Nathaniel Davis
-
Exercises for Design Patterns:
Exercise 1: Implement a simple program using Design Patterns. This can be a basic code snippet or a small project that applies a commonly used design pattern to reinforce your understanding.
Exercise 2: Challenge yourself with a more complex problem that necessitates the application of Design Patterns. It could be a problem-solving task or a larger project that involves multiple design patterns.
Exercise 3: Create a set of questions related to Design Patterns. These questions can be used for self-assessment or in a classroom setting. Include both multiple-choice and open-ended questions to test your knowledge of various design patterns and their applications.
- Use function composition in JavaScript — Rémi
- Currying in JavaScript ES6 — Adam Bene
- Composition and Currying Elegance in JavaScript — Pragyan Das
- Functional JavaScript: Function Composition For Every Day Use — Joel Thoms
- Functional Composition: compose() and pipe() — Anton Paras
- Why The Hipsters Compose Everything: Functional Composing In JavaScript — A. Sharif
- A Gentle Introduction to Functional JavaScript pt III: Functions for making functions — James Sinclair
- Curry And Compose (why you should be using something like ramda in your code) — jsanchesleao
- Function Composition in JavaScript with Pipe — Andy Van Slaars
- Practical Functional JavaScript with Ramda — Andrew D'Amelio, Yuri Takhteyev
- The beauty in Partial Application, Currying, and Function Composition — Joel Thoms
- Curry or Partial Application? — Eric Elliott
- Partial Application in JavaScript — Ben Alman
- Partial Application of Functions — Functional Reactive Ninja
- Currying vs Partial Application — Deepak Gupta
- Partial Application in ECMAScript 2015 — Ragan Wald
- Functional Composition in Javascript — Joe Cortopassi
- So You Want to be a Functional Programmer pt. I — Charles Scalfani
- So You Want to be a Functional Programmer pt. II — Charles Scalfani
- So You Want to be a Functional Programmer pt. III — Charles Scalfani
- So You Want to be a Functional Programmer pt. IV — Charles Scalfani
- So You Want to be a Functional Programmer pt. V — Charles Scalfani
- An introduction to the basic principles of Functional Programming — TK
- Concepts of Functional Programming in Javascript — TK
- An Introduction to Functional Programming Style in JavaScript — JavaScript Teacher
- A practical guide to writing more functional JavaScript — Nadeesha Cabral
- A simple explanation of functional pipe in JavaScript — Ben Lesh
-
Compose vs Pipe: Functional Programming in JavaScript — Chyld Studios
-
JavaScript Functional Programing: Compose — Theodore Anderson
-
JavaScript Function Composition Explained — Theodore Anderson
Here are some exercises to practice and understand the concepts discussed in the repository. Exercises for Partial Applications:
Exercise 1: Implement a simple program using Concept #141. This can be a basic code snippet or a small project to reinforce understanding.
Exercise 2: Challenge yourself with a more complex problem that requires the application of Concept #141. It could be a problem-solving task or a larger project.
Exercise 3: Create a set of questions related to Concept #141. These can be used for self-assessment or in a classroom setting. Include both multiple-choice and open-ended questions.
Explanation for Exercise 1: In this exercise, you'll practice implementing a simple function and creating a partial application of it. ...
Explanation for Exercise 2: For this exercise, you'll work with a more complex problem that will require currying. ...
Explanation for Exercise 3: This exercise focuses on creating a set of questions to reinforce your understanding of these concepts. ..
- Clean Code Explained – A Practical Introduction to Clean Coding for Beginners — freeCodeCamp
- Clean Code concepts adapted for JavaScript — Ryan McDermott
- Clean Code Practice: How to write clean code — Tirth Bodawala
- Function parameters in JavaScript Clean Code — Kevin Peters
- Keeping your code clean — Samuel James
- Best Practices for Using Modern JavaScript Syntax — M. David Green
- best practices for cross node/web development - Jimmy Wärting
- Writing Clean Code - Dylan Paulus
- Writing Clean Code and The Practice of Programming - Nityesh Agarwal
- Clean code, dirty code, human code - Daniel Irvine
- Practical Ways to Write Better JavaScript - Ryland G
- The Must-Know Clean Code Principles - Kesk on Medium
- The Clean Code Book - Robert C Martin
- How to use destructuring in JavaScript to write cleaner, more powerful code - freecodecamp
- Write Clean Code Using JavaScript Object Destructuring - Asel Siriwardena
-
🎥 JavaScript Best Practices and Coding Conventions - Write Clean Code
-
Exercises for Clean Code:
Exercise 1: Implement a program following Clean Code principles. Write a code snippet or a small project that demonstrates clean and readable code practices, such as meaningful variable names and proper indentation.
Exercise 2: Take on a more complex coding task and apply Clean Code principles. Challenge yourself to refactor an existing codebase, making it more maintainable and readable while following clean coding standards.
Exercise 3: Create a set of questions related to Clean Code. These questions can cover topics like naming conventions, code comments, and code structure. Include both multiple-choice and open-ended questions. These can be used for self-assessment or in a classroom setting.
This software is licensed under MIT License, See License for more information ©Leonardo Maldonado.