函数柯里化

100 阅读1分钟

函数柯里化(function currying)

函数柯里化,可以延迟接收参数,假设我们传输三个参数,如果第一个参数传输了,那么会返回函数,第二个参数传输也只会返回函数,第三个参数传输到达了参数的上限,这是才会返回执行结果。
  • 柯里化的函数可以延迟接收参数

      (比如一个函数需要接收的参数是两个,我执行的时候必须接收两个参数,否则没法执行。柯里化后的函数,可以先接收一个函数,然后再接收一个函数)
    
  • 只要参数没达到被转换函数的数量,就返回函数

  • 支持参数没达到被转换函数的数量时,无限调用

        // 理解柯里化的思想的思路
        function sum(first) {
          return function (second) {
            return first + second
          }
        }
        const result = sum(1)(2);
    

    同样实现函数函数柯里化也可以通过 lodash的current函数。

        const _ = require('lodash');
        
        function sum(first, second, third) {
          return first + second + third
        }
        
        const result = _.curry(sum);
        console.log(result(1)(2)(3));