函数柯里化含义及手写代码

375 阅读1分钟

是什么

柯里化,英文叫做Currying,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数。 下面写一个例子来简单了解一下。

image.png

上面代码就是add函数的x,y两个参数变成了先用一个函数接收x然后返回一个函数去处理y参数。就是只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。

多个参数

image.png

下面来了解一下curry的性能问题吧!

  1. 存取arguments对象要比存取命名参数慢一点
  2. 一些老版本的浏览器在arguments.length实现上很慢
  3. 使用fn.apply()和fn.call()通常要比直接调用fn()慢点
  4. 创建大量嵌套作用和闭包函数会产生消耗,无论在内存还是在速度上

最后写一道经典面试题!

image.png