web前端Javascript框架-从JS中学习函数式编程的五项支柱
小职 2021-03-30 来源 :网络 阅读 540 评论 0

摘要:本文主要介绍了web前端Javascript框架-从JS中学习函数式编程的五项支柱,通过具体的内容向大家展现,希望对大家Javascript语言的学习有所帮助。

本文主要介绍了web前端Javascript框架-从JS中学习函数式编程的五项支柱,通过具体的内容向大家展现,希望对大家Javascript语言的学习有所帮助。

web前端Javascript框架-从JS中学习函数式编程的五项支柱

一、什么是函数式编程

从FP函数式编程的眼中看来,世界的万事万物就是处理数据流:

 

input --> process -- output  

FP函数式编程是一种思维方式:

 web前端Javascript框架-从JS中学习函数式编程的五项支柱

 

比如非函数式,会这样写程序:

 

> var name = "gaowei";

> var greeting = "Hello,I'm ";;

> console.log(greeting + name)

Hello,I'm gaowei

而函数范式编程则会这样写程序:

 

> function greet(name) {

... return "Hi, I'm " + name;

... }

> greet("Gaowei");

"Hi, I'm Gaowei"

 二、用纯函数 pure-function,避免 副作用 side-effects

举例说明“非纯函数”,

 

> let name = "Gaowei";

> function greet() {

... console.log("Hi, I'm " + name);

... }

> greet()

Hi, I'm gaowei

这就不是一个纯函数,因为没有返回结果。

 

而纯函数则是:

 

> function greet(name) {

... return "Hi, I'm " + name;

... }

 三、使用高阶函数 higher-order-function,函数本身可作为输入或者输出

在高阶函数中,函数本身又可作为输入与输出。

 

> function setAdjectifier(adjective) {

... return function(description) {

..... return adjective + " " + description;

..... }

... }

> let greatifier = setAdjectifier("great");

> greatifier("meeting")

'great meeting'

 四、不要迭代,用 map, reduce 和 filter

map与filter之间的关联与区别,可以参见下面这张图:

 

 web前端Javascript框架-从JS中学习函数式编程的五项支柱

 

五、不要更改输入数据,用不可变更的数据结构

举例,我们惯常的做法常常为:

 

> let fruits = ['apple', 'banana', 'peach'];

> fruits[2] = 'orange'

'orange'

> fruits

[ 'apple', 'banana', 'orange' ]

上面的mutation的处理方法,将会修改原始数据。

 

尝试 functional-programming的方式为:

 

> newFruits = fruits.map( rm => rm == "orange" ? "peach" : rm)

[ 'apple', 'banana', 'peach' ]

> fruits

[ 'apple', 'banana', 'orange' ]

而能够高效处理 immutable 数据的常用库为:Mori, immutable.js, Underscor, Lodash, Ramda 等。


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取学习教程,开发工具,代码大全,参考书籍

web前端Javascript框架-从JS中学习函数式编程的五项支柱

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程