函数柯里化2

100 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

题外话

这个疫情啊,真滴是服气了,居家快一个月了,居家不是办公就是做饭,脑子都快麻木了,为了活跃自己的大脑,也为了帮助大家增长知识,我给大家分享一点冷知识,嘿嘿嘿……

冷知识:世界上所有的北极熊全部都属于“左撇子”,这主要是受北极熊基因的影响。

咳咳~进入正题吧

开始

在介绍函数柯里化之前,我们先了解了什么是JavaScript纯函数,关于JavaScript纯函数的介绍在上一篇:函数柯里化,下面开始说一说函数柯里化。

函数柯里化

在维基百科中,是这样介绍函数柯里化的

  • 在计算机科学中,柯里化又译为卡瑞化或加里化。
  • 是把接收多个参数的函数,变成接收一个单一的参数(最初函数的第一个参数)的函数,并且返回接受余下的参数,而且返回结果的新函数的技术。
  • 柯里化声称如果你固定某些参数,你将得到接受余下参数的一个函数

我们可以理解为,我们偶一个函数需要接收4个参数,但是我们每次只给函数传入一个参数,但是执行这个函数4次,以此来完成函数的传入。简单总结一下就是,只传递给函数一部分参数来调用它,让它返回一个函数去处理剩余的参数,这个过程就称为柯里化。

柯里化案例

这里我们将一个函数柯里化

function foo(a, b, c, d) {
  return a + b + c + d
}

console.log(foo(10,20,30,40));

上面这段代码如果进行柯里化,就会变成下面这段代码

function fn(a) {
  return function(b) {
    return function(c) {
      return function(d) {
        return a + b + c + d
      }
    }
  }
}
console.log(fn(10)(20)(30)(40));

我们也可以使用ES6提供的箭头函数再次简化我们柯里化后的代码

var sum = x => y => z =>{
  return x + y + z
}
console.log(sum(10)(20)(30));

知道什么是柯里化之后,我们一定会好奇,柯里化能给我们带来什么呢?什么时候我们需要将函数进行柯里化呢?我们就需要了解一下柯里化的一些特性。

柯里化特性

  • 单一职责
  • 逻辑的复用

关于柯里化的一些介绍今天就介绍到这里,下一篇我将根据柯里化的特性进行详细的解释