什么是函数式编程

举报
搞前端的半夏 发表于 2022/06/30 21:54:06 2022/06/30
【摘要】 函数式编程意味着使用函数作为构建块来构建过程。与 OOP 不同,函数式编程不是一种命令式范式,而是一种声明式范式,这意味着它描述了代码必须完成的工作,而不是如何完成。Haskell 等语言在编写时完全考虑到了函数式编程。Javascript语言本身的特性也使得遵循函数式编程原则成为可能,同时它也支持 OOP。以下是函数式编程的一些关键概念 纯函数纯函数简单来说,是将简单可重用的代码块编写成没...

函数式编程意味着使用函数作为构建块来构建过程。与 OOP 不同,函数式编程不是一种命令式范式,而是一种声明式范式,这意味着它描述了代码必须完成的工作,而不是如何完成。

Haskell 等语言在编写时完全考虑到了函数式编程。Javascript语言本身的特性也使得遵循函数式编程原则成为可能,同时它也支持 OOP。

以下是函数式编程的一些关键概念

纯函数

纯函数简单来说,是将简单可重用的代码块编写成没有任何副作用的函数!这意味着函数的输出由其输入定义。

纯函数不应该修改函数之外的任何东西,并且最重要的是纯函数应该是无状态的!这意味着每次函数运行时,他应该表现的和第一次运行一样!这样做的好处是:例如减少函数之间存在共享状态时存在的错误数量。

修改自身外部变量的不纯函数示例。

非纯函数.png

不变性

不变性背后的主要思想是,当数据被创建时,它永远不会再次发生改变。在函数式编程中,这是一个关键概念。它有助于消除由于数据随时间变化而引起的相当复杂的错误。React 和 Redux 等库仅提供不可直接修改的状态,相反,它们可以始终创建新状态。

ES6 数组函数是不直接修改数据而是始终返回一个新数据的函数示例。其中之一是地图功能,可以在下面的示例中看到。

地图-es6.png

结论

无论是构建前端 Web 应用程序还是任何其他类型的应用程序,函数式编程都非常有用。所以如果你还没有,我希望你试一试,自己验证一下编写函数式代码是否更容易。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。