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

创新互联是网站建设技术企业,为成都企业提供专业的网站建设、成都网站制作,网站设计,网站制作,网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制适合企业的网站。十多年品质,值得信赖!
- input --> process -- output
 
FP函数式编程是一种思维方式:
比如非函数式,会这样写程序:
- > 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"
 
举例说明“非纯函数”,
- > let name = "Gaowei";
 - > function greet() {
 - ... console.log("Hi, I'm " + name);
 - ... }
 - > greet()
 - Hi, I'm gaowei
 
这就不是一个纯函数,因为没有返回结果。
而纯函数则是:
- > function greet(name) {
 - ... return "Hi, I'm " + name;
 - ... }
 
在高阶函数中,函数本身又可作为输入与输出。
- > function setAdjectifier(adjective) {
 - ... return function(description) {
 - ..... return adjective + " " + description;
 - ..... }
 - ... }
 - > let greatifier = setAdjectifier("great");
 - > greatifier("meeting")
 - 'great meeting'
 
map与filter之间的关联与区别,可以参见下面这张图:
举例,我们惯常的做法常常为:
- > 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中学习函数式编程的五项支柱
                
                当前路径:http://www.csdahua.cn/qtweb/news12/141812.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网