您现在的位置是:亿华云 > 系统运维

从JS中学习函数式编程的五项支柱

亿华云2025-10-08 20:59:31【系统运维】0人已围观

简介一、什么是函数式编程从FP函数式编程的眼中看来,世界的万事万物就是处理数据流:input-->process--output FP函数式编程是一种思维方式:比如非函数式,会这样写程

 一、从J程什么是中柱函数式编程

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

input --> process -- output  

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

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

> 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)