还不理解函数式编程?

什么是函数式编程

函数式编程(Functional Programming, FP),FP是编程范式之一,可以认为是一种编程风格,是一种思维模式和实现的方法,我们经常听说的编程范式还有面向过程编程、面向对象编程等.

  • 面向过程编程的思维方式:简单来说就是按照步骤来实现,一步一步来实现我们想要的功能。
  • 面向对象编程的思维方式:把现实世界中的事物抽象成编程世界中的类和对象,通过封装、继承和多态来演示事物之间的内在联系
  • 函数式编程的思维方式:把现实世界中的事物和事物之间的联系抽象到程序世界 (对运算的过程进行抽象)
    • 程序的本质:根据输入通过某种运算获得相应的输出,在程序开发过程中会涉及很多有输入和输出的函数
    • x-f(联系,映射)->y, y=f(x),x就是输入,f运算过程就是函数式编程中的函数,y就是结果输出,通过y=f(x)来表述运算过程
    • 函数式编程中的函数指的不是程序中的函数(方法),而是数学中的函数即映射关系,例如: y= cos(x),cos就是函数用来描述y与x的关系,一但x确定了y也就确定了
    • 相同的输入始终要得到相同的输出(纯函数)

总结来说:函数式编程就是对运算过程的抽象

说了这么多来个简单例子巩固下

比如说求2个数的和然后输出结果

//非函数式编程
let num1 = 2;
let num2 = 2;
let sum = num1 + num2;
console.log(sum);

//函数式编程
function add (n1, n2) {
  return n1 + n2;
}
let sum = add(1, 2);

非函数式编程的方式是先定义2个变量(num1和num2),然后2个数在相加赋值给新的变量(sum),最后在打印,是通过步骤一步一步来实现的,是面向过程的方式.
函数式编程的思想,对运算过程进行抽象,要计算2个数的和,首先抽象一个函数(add)用来计算2个数的和,这个函数接受2个参数,当函数运算完毕返回一个计算结果,定义完函数可以调用这个函数了.
相对于非函数式编程,当使用函数式编程就一定会定义一些函数,这些函数也就可以被复用,并且定义的函数也一定是颗粒度很细的函数,将来也可以把这些函数在组合生成功能更加强大的函数,还有很多优势就不一一在说了,有兴趣的同学可以自行查阅.

你可能感兴趣的:(还不理解函数式编程?)