JavaScript brings functional programming to the mainstream and offers a new way of doing object-oriented programming without classes and prototypes.
Programming in a functional style means using concepts such as first-class functions, closures, higher-order functions, partial application, currying, immutability, or pure functions.
Functional programming promises to make code easier to read, understand, test, debug, or compose. Can we build an application using only pure functions?
Decorators are a tool for reusing common logic and creating variations of existing functions.
Closure can encapsulate state. Multiple closures sharing the same private state can create flexible and encapsulated objects.
"One of the best new Functional Programming ebooks" - BookAuthority
https://www.amazon.com/dp/B07PBQJYYG
https://www.amazon.co.uk/dp/B07PBQJYYG