您现在的位置是:亿华云 > 系统运维
从JS中学习函数式编程的五项支柱
亿华云2025-10-08 20:59:31【系统运维】0人已围观
简介一、什么是函数式编程从FP函数式编程的眼中看来,世界的万事万物就是处理数据流:input-->process--output FP函数式编程是一种思维方式:比如非函数式,会这样写程
一、从J程什么是中柱函数式编程
从FP函数式编程的眼中看来,世界的学习项支万事万物就是处理数据流:
input --> process -- outputFP函数式编程是一种思维方式:
比如非函数式,会这样写程序:
> var name = "gaowei"; > var greeting = "Hello,函数Im ";; > console.log(greeting + name) Hello,Im gaowei而函数范式编程则会这样写程序:
> function greet(name) { ... return "Hi, Im " + name; ... } > greet("Gaowei"); "Hi, Im Gaowei"二、用纯函数 pure-function,式编避免 副作用 side-effects
举例说明“非纯函数”,从J程
> let name = "Gaowei"; > function greet() { ... console.log("Hi,中柱 Im " + name); ... } > greet() Hi, Im gaowei这就不是一个纯函数,亿华云因为没有返回结果。学习项支
而纯函数则是函数:
> function greet(name) { ... return "Hi, Im " + name; ... }三、使用高阶函数 higher-order-function,式编函数本身可作为输入或者输出
在高阶函数中,从J程函数本身又可作为输入与输出。中柱
> function setAdjectifier(adjective) { ... return function(description) { ..... return adjective + " " + description; ..... } ... } > let greatifier = setAdjectifier("great"); > greatifier("meeting") great meeting四、学习项支不要迭代,函数用 map,式编 reduce 和 filter
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 等。
云服务器提供商很赞哦!(62)