Video description
"This book transformed the way that I think about and write JavaScript."
Andrew Meredith, Intrinsitech Corporation
Functional Programming in JavaScript teaches you techniques to improve your web applications: their extensibility, modularity, reusability, and testability, as well as their performance. This easy-to-read book/course uses concrete examples and clear explanations to show you how to use functional programming in real life. If you're new to functional programming, you'll appreciate this guide's many insightful comparisons to imperative or object-oriented programming that help you understand functional design. By the end, you'll think about application design in a fresh new way, and you may even grow to appreciate monads!
In complex web applications, the low-level details of your JavaScript code can obscure the workings of the system as a whole. As a coding style, functional programming (FP) promotes loosely coupled relationships among the components of your application, making the big picture easier to design, communicate, and maintain.
Inside:
- High-value FP techniques for real-world uses
- Using FP where it makes the most sense
- Separating the logic of your system from implementation details
- FP-style error handling, testing, and debugging
- All code samples use JavaScript ES6 (ES 2015)
Created for developers with a solid grasp of JavaScript fundamentals and web application design.
Luis Atencio (@luijar) is a staff software engineer for Citrix Systems in Fort Lauderdale, Florida. He has a B.S. and an M.S. in computer science and now works full-time developing and architecting applications using JavaScript, Java, and PHP platforms. Luis is very involved in the community and has presented frequently at local meetups and conferences. He blogs about software engineering at luisatencio.net, writes articles for magazines and DZone, and is also the coauthor of RxJS in Action (Manning, 2017).
Easy to navigate, with real-life examples.
Amy Teng, Dell
Now, this is the way to write JavaScript!
William E. Wheeler, West Corporation
After reading this book, I revisited how I approached coding and was able to retrain my mind using better methods and techniques.
Tanner Slayton Sr., Microsoft Corporation
NARRATED BY CHRIS DUNN
Table of Contents
PART 1. Think functionally
Chapter 1. Becoming functional
Chapter 1. What is functional programming?
Chapter 1. Pure functions and the problem with side effects
Chapter 1. Referential transparency and substitutability
Chapter 1. Benefits of functional programming
Chapter 1. Reacting to the complexity of asynchronous applications
Chapter 2. Higher-order JavaScript
Chapter 2. Functional vs. object-oriented programming
Chapter 2. Managing the state of JavaScript objects
Chapter 2. Deep-freezing moving parts
Chapter 2. Functions
Chapter 2. Types of function invocation
Chapter 2. Closures and scopes
Chapter 2. JavaScript’s function scope
Chapter 2. Practical applications of closures
PART 2. Get functional
Chapter 3. Few data structures, many operations
Chapter 3. Understanding lambda expressions
Chapter 3. Gathering results with _.reduce
Chapter 3. Reasoning about your code
Chapter 3. SQL-like data: functions as data
Chapter 3. Learning to think recursively
Chapter 3. Recursively defined data structures
Chapter 4. Toward modular, reusable code
Chapter 4. Requirements for compatible functions
Chapter 4. Curried function evaluation
Chapter 4. Partial application and parameter binding
Chapter 4. Composing function pipelines
Chapter 4. Composition with functional libraries
Chapter 4. Managing control flow with functional combinators
Chapter 4. Fork (join) combinator
Chapter 5. Design patterns against complexity
Chapter 5. Building a better solution: functors
Chapter 5. Functors explained
Chapter 5. Functional error handling using monads
Chapter 5. Error handling with Maybe and Either monads
Chapter 5. Interacting with external resources using the IO monad
Chapter 5. Monadic chains and compositions
PART 3. Enhancing your functional skills
Chapter 6. Bulletproofing your code
Chapter 6. Challenges of testing imperative programs
Chapter 6. Testing functional code
Chapter 6. Separating the pure from the impure with monadic isolation
Chapter 6. Capturing specifications with property-based testing
Chapter 6. Measuring effectiveness through code coverage
Chapter 6. Measuring the complexity of functional code
Chapter 7. Functional optimizations
Chapter 7. Currying and the function context stack
Chapter 7. Deferring execution using lazy evaluation
Chapter 7. Implementing a call-when-needed strategy
Chapter 7. Taking advantage of currying and memoization
Chapter 7. Recursion and tail-call optimization (TCO)
Chapter 8. Managing asynchronous events and data
Chapter 8. Falling into a callback pyramid
Chapter 8. First-class asynchronous behavior with promises
Chapter 8. Future method chains
Chapter 8. Lazy data generation
Chapter 8. Functional and reactive programming with RxJS
Chapter 8. RxJS and promises