O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Functional Programming in JavaScript Video Edition

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

  1. PART 1. Think functionally
    1. Chapter 1. Becoming functional 00:07:42
    2. Chapter 1. What is functional programming? 00:09:33
    3. Chapter 1. Pure functions and the problem with side effects 00:08:09
    4. Chapter 1. Referential transparency and substitutability 00:06:15
    5. Chapter 1. Benefits of functional programming 00:08:54
    6. Chapter 1. Reacting to the complexity of asynchronous applications 00:06:18
    7. Chapter 2. Higher-order JavaScript 00:04:13
    8. Chapter 2. Functional vs. object-oriented programming 00:09:58
    9. Chapter 2. Managing the state of JavaScript objects 00:06:49
    10. Chapter 2. Deep-freezing moving parts 00:05:20
    11. Chapter 2. Functions 00:07:52
    12. Chapter 2. Types of function invocation 00:03:40
    13. Chapter 2. Closures and scopes 00:05:40
    14. Chapter 2. JavaScript’s function scope 00:04:45
    15. Chapter 2. Practical applications of closures 00:07:05
  2. PART 2. Get functional
    1. Chapter 3. Few data structures, many operations 00:08:03
    2. Chapter 3. Understanding lambda expressions 00:06:57
    3. Chapter 3. Gathering results with _.reduce 00:08:01
    4. Chapter 3. Reasoning about your code 00:07:48
    5. Chapter 3. SQL-like data: functions as data 00:03:35
    6. Chapter 3. Learning to think recursively 00:06:30
    7. Chapter 3. Recursively defined data structures 00:05:35
    8. Chapter 4. Toward modular, reusable code 00:07:39
    9. Chapter 4. Requirements for compatible functions 00:07:22
    10. Chapter 4. Curried function evaluation 00:08:39
    11. Chapter 4. Partial application and parameter binding 00:06:29
    12. Chapter 4. Composing function pipelines 00:08:22
    13. Chapter 4. Composition with functional libraries 00:09:23
    14. Chapter 4. Managing control flow with functional combinators 00:05:05
    15. Chapter 4. Fork (join) combinator 00:03:22
    16. Chapter 5. Design patterns against complexity 00:07:55
    17. Chapter 5. Building a better solution: functors 00:04:19
    18. Chapter 5. Functors explained 00:05:50
    19. Chapter 5. Functional error handling using monads 00:07:13
    20. Chapter 5. Error handling with Maybe and Either monads 00:12:13
    21. Chapter 5. Interacting with external resources using the IO monad 00:04:39
    22. Chapter 5. Monadic chains and compositions 00:08:20
  3. PART 3. Enhancing your functional skills
    1. Chapter 6. Bulletproofing your code 00:04:51
    2. Chapter 6. Challenges of testing imperative programs 00:06:38
    3. Chapter 6. Testing functional code 00:06:06
    4. Chapter 6. Separating the pure from the impure with monadic isolation 00:07:11
    5. Chapter 6. Capturing specifications with property-based testing 00:11:17
    6. Chapter 6. Measuring effectiveness through code coverage 00:06:31
    7. Chapter 6. Measuring the complexity of functional code 00:06:01
    8. Chapter 7. Functional optimizations 00:06:59
    9. Chapter 7. Currying and the function context stack 00:06:25
    10. Chapter 7. Deferring execution using lazy evaluation 00:06:41
    11. Chapter 7. Implementing a call-when-needed strategy 00:06:45
    12. Chapter 7. Taking advantage of currying and memoization 00:06:29
    13. Chapter 7. Recursion and tail-call optimization (TCO) 00:10:08
    14. Chapter 8. Managing asynchronous events and data 00:06:33
    15. Chapter 8. Falling into a callback pyramid 00:06:56
    16. Chapter 8. First-class asynchronous behavior with promises 00:04:40
    17. Chapter 8. Future method chains 00:09:22
    18. Chapter 8. Lazy data generation 00:06:35
    19. Chapter 8. Functional and reactive programming with RxJS 00:06:59
    20. Chapter 8. RxJS and promises 00:02:38