今天通过一个案例,帮助大家思考一下如何从面向过程编程思想过渡到函数式编程思想。我们看下下面这段面向过程和函数式实现的一个求和函数。
/**
* 函数式编程的思维方式:把现实世界的事物和事物之间的联系抽象到程序世界--对运算过程进行抽象
* 程序的本质:根据输入通过某种运算获得相应的输出
*/
// 面向过程编程思想
let a = 1
let b = 2
let sum = a + b
let c = 98
let d = 99
let sum = c + d
// 函数式编程思想
function getSum (n1, n2) {
return n1 + n2
}
let sum = getSum(1, 2)
let sum = getSum(98, 99)
面向过程是我们最熟悉的也是经常使用的编程思想,我们将程序的执行逻辑按照执行顺序一步一步的写出来然后去运行获得执行结果。时间久了我们会发现我们可以将相同逻辑抽象出来,封装成具有特定功能的函数来重用。就形成了函数式编程思想,就像第二段代码使用函数式编程思想,我们直接将求和运算进行了抽象,并封装一个求和函数 getSum 每次我们用到求和时只需要调用 getSum 函数传递需要求和的数值就可以了。
这里抽象遵循两个条件: 一、有输入、有输出,就是将面向过程定义的 a、b、c、d 抽象成 getSum 函数的入参 n1、n2 即输入,另外将求和运算 sum = a + b 、sum = c + d 抽象成 getSum 函数的返回值 return n1 + n2 即输出;二、相同的输入要有相同的输出,这点很好理解就是输入 1 和 2 ,返回永远是 3 。