什么是函数式编程
函数式编程(Functional Programming,FP),FP是编程范式之一,我们常听说的编程范式还有面向过程编程,面向对象编程。
面向对象编程的思维方式: 把现实世界中的事物抽象成程序世界中的类和对象,通过封装、继承和多态来演示事物事件的关系。 函数式编程的思维方式: 把现实世界的事物和事物之间的==联系==抽象到程序世界(对运算过程进行抽象)。
- 程序的本质:根据输入通过某种运算获得相应的输出,程序开发过程中会涉及很多有输入和输出的函数。
- x->f(联系、映射)->y,y=f(x)
- 函数式编程中的函数指的不是程序中的函数方法,而是数学中的函数即映射关系,例如:y=sin(x),x和y的关系。
- 相同的输入始终要得到相同的输出(纯函数)
- 函数式编程用来描述数据(函数)之间的映射。
高阶函数
什么是高阶函数
高阶函数(Higher-orderfunction)
- 可以把函数作为参数传递给另一个函数
- 可以把函数作为另一个函数的返回值
function forEach(arr,fn) {
for (let i = 0; i < arr.length; i++) {
fn(arr[i])
}
}
forEach([1,3,5,7,9],item=>{
console.log(item);//1,3,5,7,9
})
函数的返回值
//例1
function makeFn() {
let msg = "hello function"
return function () {
console.log(msg);
}
}
makeFn()() //hello function
let f = makeFn()
f() //hello function
//例2
function once(fn) {
let done = false
return function(){
if (!done) {
done = true
return fn.apply(this,arguments)
}
}
}
let pay = once(money=>{
console.log(`支付:${money} RMB`);
})
pay(4)
pay(6)
pay(8)
//支付:4 RMB