达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
达内新闻
 当前位置:主页 > 达内新闻 >

函数式编程的概念与特点

时间:2020-05-19  来源:未知  作者:广州达内培训

函数式编程开发是程序员在学习软件开发技术的过程中需要熟练掌握的一种编程方式,而今天我们就一起来了解一下,函数式编程的概念与特点。

函数式编程的概念与特点

1、函数式编程

函数式编程在JavaScript世界里已经成为一个很火的话题。仅仅几年前,只有很少的JavaScript开发者知道函数式编程。但是过去三年我见过的各个大项目的基础代码都深入使用了函数式编程的想法。

函数式编程式是由纯函数、局部声明、变量所组成的构建过程。函数式编程是声明式而不是命令式,应用程序状态流经整个函数。不同于面向对象编程的应用状态在对象和成员函数里共享。

函数式编程是一种基于一些基本的、明确的规则构建软件的编程规则。其他一些编程规则包括面向对象和面向过程式编程。

函数式代码往往比命令式或面向对象的代码更简洁、更可预测、更容易测试-但是如果你不熟悉它和与之相关的常见模式,函数式代码也可以看起来更加密集、而且相关文献对于新手来说是更不可读。

如果你开始使用Google函数式编程的术语,那么你将很快遇到学术语言的一堵砖墙,这对初学者来说可能非常吓人。简单的说它有一个学习曲线是对其严重的低估。但是,如果你已经在JavaScript中编程了一段时间,那么这是很好的机会在实际的软件中使用很多函数式编程概念和实用程序。

2、共享状态

共享状态是存在于共享作用域中的任何变量,对象或内存空间,或作为对象的属性在范围之间传递。共享范围可以包括全局范围或闭包范围。通常,在面向对象编程中,通过向其他对象添加属性,让对象在范围之间共享。

3、Immutability不可变性

不可变对象是指创建后不能修改的对象。相反,可变对象是任何可以在创建后被修改的对象。

不变性是函数式编程的核心概念,因为没有它,程序中的数据流是有损的。状态记录被废弃了,奇怪的错误可出现在你的软件中。

在JavaScript中,不要混淆const与不可变性。创建变量名绑定,在创建后不能重新分配。const创建的变量名的绑定,该变量在创建之后不能被重新赋值。const并不能创建不可变对象。你不能更改绑定引用的对象,但你仍然可以更改对象的属性,这意味着使用const创建的绑定是可变的,而不是不可变的。

4、副作用

副作用是指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响。副作用包括:

修改任何外部变量或对象属性(例如,全局变量或父函数范围链中的变量)

登录到控制台

写入屏幕

写文件

写入网络

触发任何外部过程

调用具有副作用的任何其他功能

函数式编程主要避免副作用,使程序的效果更容易理解,并且更容易测试。

5、通过高层函数实现的可重用性

函数式编程倾向于重用一组通用的实用函数程序来处理数据。面向对象编程倾向于将对象中的方法和数据进行聚合。这些聚合的方法只能根据他们在设计的数据类型进行操作,通常只能针对包含在特定对象实例中的数据。

在函数式编程中,任何类型的数据都是平等的。相同的map()实用程序可以映射到对象、字符串、数字或任何其他数据类型,因为它将函数作为处理给定数据类型的参数。FP使用类似通用的机制来规避类似问题。

JavaScript具有一流的函数,它允许我们将函数视为数据-将它们分配给变量,传递给其他函数,从函数返回它们等等...

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。




上一篇:程序员如何识别和处理代码中坏掉的部分
下一篇:没有了

友情链接:
  • 全球最大晶圆代工半导体制造厂,台积电斥资订购艾斯摩尔机器设备
  • 英特尔依然是那个英特尔,且看英特尔的城防体系
  • 支持双 DRAM 内存接口,慧荣企业级 SSD 主控方案披露
  • 在全球被反垄断罚款,冤!高通到底哪里得罪了欧盟?
  • 强强联合!万业、微电子所和芯鑫共同打造全新半导体设备
  • 复旦大学校长称:对于集成电路产业发展,大学应该主动担当
  • 技术再升级!无锡中科芯攻克晶圆级再布线及晶圆级凸点制备关键技
  • 聚力!万业企业设立集成电路装备集团,提供自主可控设备
  • 德州仪器C2000微控制器增强连通性和控制性
  • 英特尔打出降价策略,以免被竞争对手 AMD 打败?
  • 贸易摩擦的闹剧没有赢家,苹果有勇气离开中国吗?
  • 图像信号与视觉处理器的发展趋势
  • 真干快消品定位方案班(第二期)火热开班
  • Java集合 ArrayList原理及使用
  • TDD(测试驱动开发)死了吗?
  • JAVA基础之XML相关
  • javaweb项目搭建ehcache缓存系统
  • 每日一码——字符串统计
  • 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
  • 九:模板方法模式
  • 十二:命令模式(人员解耦和)
  • Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
  • SpringCloud学习(SPRINGCLOUD微服务实战)一
  • 记一次微信网页授权后获取用户信息并重定向
  • 速途新营销五点实战洞察解码“品效合一”
  • 十一:外观模式详解(Service,action与dao)
  • 手把手教你学会 基于JWT的单点登录
  • mysql锁机制总结,以及优化建议
  • 解决多个版本jar包冲突【jar内包名重命名】
  • 中国首张5G终端电信设备进网许可证 华为Mate 20 X 5G版入网
  • RPC之Thrift
  • 高级Java工程师必备 ----
  • 天猫618期间实物支付GMV增长38.5%
  • 换季了,老板你的库存处理好了吗?
  • 从“618”大数据看中国消费新活力
  • 小米生态链:贵在格局感与收放度
  • CODING 2.0 企业级持续交付解决方案
  • 老铁奇趴“新京济” 快手*京东618战报出炉
  • 中小企业新媒体运营基本技能
  • 上汽大通房车再度携手LINE FRIENDS 魔都巡游顺利开启
  • 华为高端手机国内市场份额超苹果夺得榜首
  • 中国智能制造分析报告
  • iPlus艾加营销助力腾讯广告牵手吴晓波 推进商业IP变现
  • 2019世界新能源汽车大会7月1日将在海南举行
  • 区域酒企如何转型突围
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载