学习笔记:函数式编程

137 阅读1分钟

函数式编程是一个很古老的概念,早于第一台计算机的诞生。

什么是函数式编程

  • 函数式编程是用来描述数据(函数)之间的映射。
  • 函数式编程中的函数指的不是程序中的函数(方法),而是数学中的函数即映射关系。如:y=sin(x),x和y的关系。
  • 相同的输入始终要得到相同的输出(纯函数)。
// 非函数式
let num1 = 2;
let num2 = 3;
let sum = num1 + num2;
console.log(sum);

// 函数式
function sum (a, b){
    return a + b;
}
console.log(sum(2, 3));

lodash中的组合函数

使用lodash中的flowRight组合函数,实现一个数组的最后一个元素大写。

import _ from 'lodash';
const reverse = arr => arr.reverse();
const first = arr => arr[0];
const toUpper = str => str.toUpperCase();
// 最先执行的函数参数,在最后一个参数位置
const fn = _.flowRight(toUpper, first, reverse);

console.log(fn(['one', 'two', 'three'])); 
// THREE

组合函数实现原理

function compose(...args){
    return function (val){
        return args.reverse().reduce((acc, fn)=>{
            return fn(acc)
        }, val)
    }
}