Deep Dive into Functional JavaScript
3.9 (17 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
124 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Deep Dive into Functional JavaScript to your Wishlist.

Add to Wishlist

Deep Dive into Functional JavaScript

A practical guide to mastering functional programming in ES6 from the perspective of building real-world applications.
3.9 (17 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
124 students enrolled
Created by Packt Publishing
Last updated 5/2017
Current price: $12 Original price: $125 Discount: 90% off
3 days left at this price!
30-Day Money-Back Guarantee
  • 3 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion

Training 5 or more people?

Get your team access to Udemy's top 2,000 courses anytime, anywhere.

Try Udemy for Business
What Will I Learn?
  • Discover the principles of functional programming
  • Learn the benefits and drawbacks of functional programming compared to other styles
  • Learn the language constructs of ES6 that are used for functional programming
  • Write elegant code with chaining and context binding
  • Understand function composition and function sequencing in depth
  • Learn about higher order functions with a special emphasis on map, reduce, and filter
  • Translate SQL queries into chained map and reduce calls
  • Learn currying and partial application in practice
  • Learn recursion, tail-call optimization, and the role of accumulator variables
  • Experiment with optimization techniques combating the performance drawbacks of functional programming
  • Map out a plan for how to continue after the course
View Curriculum
  • Take this course if you understand the fundamentals of JavaScript, such as scopes and closures, and you are familiar with at least the ES5 syntax.

In this course, you will have an in-depth overview and the tools in your utility belt to write maintainable code in JavaScript.

We will stick to the latest version of JavaScript in this course, ES2017. You don't have to know ES2017 to benefit from the course, as we will introduce the language constructs that we use during it.

You will experience the benefits of functional programming even if your code is not purely functional. In this course, you will learn the building blocks that act as a utility belt in your arsenal, enabling you to write code that's easy to understand, extend, test, and debug. You will get hands-on practice on how to use currying, partial evaluation, map, reduce, filter, recursion, and other functional programming concepts in ES6.

About the Author

Zsolt Nagy is a web development team lead, mentor, and software engineer living in Berlin, Germany. As a software engineer, Zsolt continuously challenges himself to stick to the highest possible standards when improving his own knowledge. The best way of learning is to create a meaningful product on the way. Until you reach this state, the second best way of learning is to share with others what you learned and how you structure your thoughts.

Zsolt is an author of the book and video course ES6 in Practice, introducing you to all meaningful features of ES6. He is also an author of the book The Developer’s Edge – How to Double Your Career Speed with Soft-Skills.

Who is the target audience?
  • This course is geared towards software developers who would like to improve their skills and expertise by sticking to the highest quality standards when it comes to writing code.
Compare to Other JavaScript Courses
Curriculum For This Course
22 Lectures
Introduction to Functional Programming
4 Lectures 29:39

This video gives an overview of the entire course.

Preview 04:50

Our objective is to get a feel of the differences between functional programming and other programming styles such as object oriented programming, via a demonstrated code example.

Imperative and Declarative Programming by Example

We learn the principles of writing code in functional programming in depth: avoiding side effects by writing pure functions, and using immutable data structure. A code example introduces techniques used in functional programming.

Principles of Writing Code in Functional Style

We will summarize the advantages and disadvantages of functional programming, and we will also offset some of the disadvantages with some optimization techniques.

Benefits and Drawbacks of Functional Programming
Functional Programming in ES6
4 Lectures 37:39

ES6/ES2015 is introduced from a functional perspective, so that we can build on these fundamentals to write clear, compact functional code.

Preview 11:06

Using immutable data structures is a cornerstone of functional programming. Yet, the JavaScript support for immutability is not that obvious. This video raises awareness on the different types of cloning, and makes sure we don’t end up mutating our data.

Deep and Shallow Cloning in JavaScript

Functional programming techniques are mixed with other techniques in JavaScript. When it comes to handling events, timeouts, and other callbacks, we have to use techniques to connect functional code with its context. This video demonstrates how context binding is used as a connector.

Context Binding by Example

Reading pure functional code is often a riddle. We increase readability with object-oriented and functional techniques: chaining and function composition.

Chaining and Function Composition
Higher Order Functions in JavaScript
6 Lectures 42:00

JavaScript functions are values. Therefore, functions can be passed to other functions, and they can also be return values of functions. This is how we create higher order functions, giving us a powerful way to write loops and callbacks in functional style. 

Preview 05:02

In functional programming, we often use higher order functions on arrays instead of using loops. Therefore, it is beneficial to learn about ways of handling JavaScript arrays.

Handling JavaScript Arrays with Higher Order Functions

Even though forEach looks like a functional utility, it is not usable when our goal is to write side-effect free code. We should still substitute loops with proper functional constructs. Therefore, it is now time to introduce the map, reduce, and filter operations.

Introducing Map, Reduce, and Filter

We will take some SQL SELECT statements and translate them to queries written using JavaScript higher order functions such as map, reduce, and filter. You will not only learn how to perform inner joins of two tables but you will also see an example performing a left join. We will also learn how to group our results.

Joins with Map-Reduce

SQL queries often contain filtering conditions. As we will see filtering in action, we will first implement the filter function using reduce. Then we will apply various conditions on our queries to filter our results. We will filter regular joins as well as aggregated results.

Filtering Examples

This practical exercise will make you think out of the box a bit for understanding how advanced reduce functions can be implemented. We will use the reduce function to create a tree data structure from an array of nodes.

Converting an Array of Nodes to a Tree
Currying and Partial Evaluation
4 Lectures 31:19

You will learn some basic definitions and JavaScript constructs that we will use throughout the rest of the section.

Preview 05:05

 When writing higher order functions in functional style, you will often encounter the technique of currying. You will also need to understand currying for the purpose of understanding a partial application.

Deep Dive into Currying

We will start with a comparison between currying and partial application. We will then implement partial application in JavaScript. After the implementation, we will revisit the bind function of JavaScript for the purpose of partially applying arguments of a function. We will conclude this video with writing a partially applied map function.

Partial Application

We will use the principles of partial application in this section to implement a template renderer in JavaScript without using any external libraries.

Rendering Templates Using Partial Application
Recursion, Tail Recursion, and Accumulator Variables
2 Lectures 18:03

You will learn what recursion is in mathematics and in software development. You will also find out about different types of recursion. At the end of this section, we will see how to transfer iterative solutions to recursive solutions using accumulator variables.

Preview 06:49

This section introduces some optimization techniques combating the drawbacks of using recursion. These optimization techniques are mixing functional and non-functional elements of JavaScript, tail call optimization, and memoization.

Optimization Techniques with Recursion
Summary and Outlook
2 Lectures 08:59

You will review the main points learned in this volume in order to place them in your functional programming utility belt.

Preview 06:28

In this last video, you will construct a learning plan for yourself based on your own goals. You will also get some recommendations that will accelerate your learning curve.

Your Learning Path
About the Instructor
Packt Publishing
3.9 Average rating
8,294 Reviews
59,314 Students
689 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.