函数式编程
函数式编程
什么是函数式编程?
函数式编程的特性(纯函数、柯里化、函数组合等)
函数式编程的应用场景
函数式编程库——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
}
}

浙公网安备 33010602011771号