函数式编程

110 阅读1分钟

什么是函数式编程

函数式编程(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