函数式编程(简称 FP)是 JavaScript 中流行的一种编程范式。 JavaScript 将函数视为一等公民,这使得用 JavaScript 编写函数式编程变得容易。
这篇文章将告诉你函数式编程的基础知识和好处,以及如何在 JavaScript 中使用它们。
什么是函数式编程?
函数式编程是一种编写具有特定原则的软件的方式。这个想法是,这些原则将
使编写、测试和调试代码更容易
更容易推理代码
提高开发人员的生产力
和更多
函数式编程的核心原则
纯函数
函数应该是纯的。纯函数总是产生相同的输出并且没有影响输出的副作用。副作用是函数无法控制的任何东西。例如,任何输入/输出 (I/O),例如从数据库/文件读取或使用 console.log。甚至是静态变量。
1. 但我需要 I/O?
没有 I/O 的应用程序没有那么有用。函数式编程不是要消除 I/O。相反,您应该将业务逻辑与 I/O 分开。任何副作用都应该在我们流程的边缘处理,而不是在它们的中间。通过这样做,您可以获得易于测试的纯业务逻辑。
JavaScript 不是一种纯粹的函数式编程语言。所以没有什么可以阻止你做任何你觉得舒服的事情。另一方面,Haskell 是纯函数式编程语言的一个例子。在 Haskell 中,您被迫使用函数式编程原则。
不可变状态
不可变状态意味着状态不应该改变。在函数式编程中,我们不改变状态,而是复制它。这似乎违反直觉:我们为什么要复制状态而不是更改它?
在 JavaScript 中,您可以通过引用传递值。这可能很危险。
递归
使用递归,列表不会使用 for、while 或 do…while 进行迭代,因为它们会改变状态(例如,增加计数器)。取而代之的是函数式编程函数,例如 map()、filter() 和 reduce()。
“递归”这个词吓了我好久,我不得不承认。但是在 JavaScript 中,您可以快速看到使用这些函数的可读性和生产力的好处。
reduce() 将让您将元素列表“减少”为单个值。这对于处理数字很有用。
这个功能对我来说是最难理解的。
结论
现在您知道函数式编程是什么,为什么有用,以及如何在 JavaScript 中使用它。可能需要一些时间来适应,但值得付出努力。我们涵盖的功能适用于所有主要的编程语言。这不是 JavaScript 特有的。