函数式编程

函数式编程

什么是函数式编程?

函数式编程的特性(纯函数、柯里化、函数组合等)

函数式编程的应用场景

函数式编程库——Loadash

为什么需要函数式编程

函数式编程是被React带火的:React的高阶组件使用了高阶函数来实现,高阶函数就是函数式编程的一个特性。
流行框架在趋向函数式编程。
函数式编程可以抛弃this。
打包过程中可以更好的利用tree shaking过滤无用的代码。
方便测试、方便并行处理。
有很多库可以帮助我们进行函数式开发:loadash、underscore、ramda

什么是函数式编程

函数式编程的历史、发展简介

“函数式编程”,(Functional Programming,FP) 又称泛函编程, 是一种”编程范式”(programming paradigm),也就是如何编写程序的方法论。
和指令式编程相比,函数式编程的思维方式更加注重函数的计算。它的主要思想是把问题的解决方案写成一系列嵌套的函数调用。
常见编程范式还有:
面向过程编程:按照步骤来一步一步的实现想要的功能。
面向对象编程:把现实世界的事物抽象成程序世界中的类和对象,通过封装、继承和多态来演示事物事件的联系。
函数式编程:把现实世界的事物和事物之间的联系抽象到程序世界(对运算过程进行抽象)。

  • 程序的本质:根据输入通过某种运算获得相应的输出,程序开发过程中会涉及很多有输入和输出的函数。
  • x->f(联系,映射)->y,y=f(x)
  • 函数式编程中的函数不是程序中的函数(方法),而是数学中的函数——映射关系,例如:y=sin(x),x和y的关系。 x值确定以后,y的值一定就确定了。
  • 相同的输入始终要得到相同的输出(纯函数)
  • 函数式编程用来描述数据(函数)之间的映射。
let num1=2;
let num2=3;
let sum=num1+num2;
console.log(sum);

//函数式
function add(n1,n2){
	return n1+n2;
}
let sum=add(2,3);
console.log(sum);

函数是一等公民

是高阶函数和柯里化的基础。
https://developer.mozilla.org/zh-CN/docs/Glossary/First-class_Function

  • 函数可以存储在变量中
  • 函数作为参数
  • 函数作为返回值
    在js中,函数就是一个普通的对象(可以通过new Function()),我们可以把函数存储到变量/数组中,它还可以作为另一个函数的参数和返回值,甚至我们可以在程序运行的时候通过new Function(‘alert(1)’)来构造一个新的函数。
  • 把函数赋值给变量
//把函数值赋值给变量
let fn=function(){
	console.log('Hello 一等公民——函数');
}
fn();

//一个示例
const BlogController={
	index(ports){return View.index(posts)},
	show(post){return View.show(post)},
	create(attrs){return Db.create(attrs)},
	update(post,attrs){return Db.update(post,attrs)},
	destory(post){return Db.destroy(post)}
	}
	
//优化
const BlogController={
	index:View.index,
	show:View.show,
	create:Db.create,
	update:Db.update,
	destory:Db.destroy
	}

}

posted @ 2021-12-27 21:38  flyall  阅读(142)  评论(0)    收藏  举报