JS中学习函数式编程的五项支柱是什么

本篇内容介绍了“JS中学习函数式编程的五项支柱是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

利川网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联

 一、什么是函数式编程

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

input --> process -- output

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

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之间的关联与区别,可以参见下面这张图:

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 等。

“JS中学习函数式编程的五项支柱是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


当前文章:JS中学习函数式编程的五项支柱是什么
文章起源:http://ybzwz.com/article/jhgdeh.html