O'Reilly logo
live online training icon Live Online training

Functional Programming with Javascript ES6+

Functional Programming with Javascript ES6+

Topic: Software Development
Shaun Wassell

Functional Programming is a revolutionary way of writing code, and is rapidly gaining traction in the world of software development. While Object-Oriented Programming is still the most popular programming paradigm, there are a number of problems that come about when using it - hard-to-find bugs, tightly-coupled code, very difficult to scale. Functional programming allows us to solve or avoid all these problems by taking a very different approach to writing software. By learning and following the core concepts of Functional Programming, you can quickly write more maintainable, flexible, and beautiful code.

What you'll learn-and how you can apply it

  • The core concepts of Functional Programming and how to apply them in Javascript
  • First-class functions and what we can do with them
  • JavaScript’s built-in array functions and how they help us work with data
  • Advanced functional concepts such as currying, recursion, and composition

This training course is for you because...

  • You’re a software developer who’s tired of brittle code
  • You’ve heard about Functional Programming and want to see how to use it in JavaScript
  • Your team members keep talking about Functional Programming and you want to be able to join in the conversation


  • Knowledge of JavaScript syntax (doesn’t have to be ES6)

Course Set-up

  • You’ll want to have the latest version of NPM and Node.js installed

Recommended Preparation

Recommended Follow-up

About your instructor

  • Shaun is a lifelong programmer and problem-solving addict. His goal is to help people build incredible software and solve meaningful problems by mastering the art of software development. He currently works as the Head of Application Development at Starweaver Inc., but also has a lot of side gigs, including consulting, freelance development, and online education. Don’t hesitate to get in contact with him if you enjoy his materials.


The timeframes are only estimates and may vary according to how the class is progressing

Overall Introduction (5 mins)

Learning the Basic Functional Concepts (40 mins)

  • Learning the Benefits of Functional Programming
  • Learning the Difference between Declarative and Imperative Code
  • Discovering The Three Core Concepts of Functional Programming
  • Learning About Immutability
  • Separating of Data and Functions
  • Working with First-Class Functions
  • Preventing Mutation with ESLint
  • Q&A

Working with First-Class Functions (65 mins)

  • Reviewing ES6 Arrow Functions
  • Treating Functions as Data: Assigning Functions to Variables
  • Treating Functions as Data: Arrays of Functions
  • Passing Functions as Arguments
  • Returning Functions
  • Using Closure in Functional Programming
  • Using Higher-Order Functions
  • Q&A

Break (10 mins)

Working with Arrays and Objects (75 mins)

  • Using Javascript’s Built-in Array Functions
  • Combining Objects with the Spread Operator
  • Using Javascript’s Array.map function
  • Using Javascript’s Array.filter function
  • Using Javascript’s Array.every function
  • Using Javascript’s Array.some function
  • Preventing Mutation by “Slicing”
  • Using Javascript’s Array.sort function
  • Using Javascript’s Array.reduce function
  • Combining Built-in Array Functions
  • Q&A

Break (10 mins)

Learning Advanced Functional Concepts (50 mins)

  • Learning Partial Application & Currying
  • Learning Recursion
  • Composing Functions
  • Using Function.prototype
  • Creating an Auto-Curry Function
  • Q&A

Break (10 mins)

Course Wrap-up and Next Steps (10 mins)