View on GitHub

reading-notes

Functional Programming Concepts

Functional programming is the process of building software by composing pure functions, avoiding shared state, mutable data, and side-effects. Functional programming is declarative rather than imperative, and application state flows through pure functions. Contrast with object oriented programming, where application state is usually shared and colocated with methods in objects.

Reusability Through Higher Order Functions

Functional programming tends to reuse a common set of functional utilities to process data. Object oriented programming tends to colocate methods and data in objects. Those colocated methods can only operate on the type of data they were designed to operate on, and often only the data contained in that specific object instance.

A higher order function is any function which takes a function as an argument, returns a function, or both. Higher order functions are often used to:

Refactoring JavaScript for Performance and Readability (with Examples!)