Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

通过学习 JavaScript 中的函数式编程成为更好的开发人员。

Posted on 2022-05-30

4b098bgsrk2glyq2qh2t.jpg

函数式编程(简称 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 特有的。

原文: https://dev.to/callmebobonwa/become-a-better-developer-by-learning-functional-programming-in-javascript-55ep

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Lou Plummer
  • Luke Wroblewski
  • Matt Stoller
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme