10.curry 方法

Posted 前端小智@大迁世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.curry 方法相关的知识,希望对你有一定的参考价值。

使用方便有用的方法,以减少代码行数,提高我们的工作效率,增加我们的摸鱼时间。

curry 方法

功能:柯里化一个函数。

const curry = (fn, arity = fn.length, ...args) =>
  arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args);

说明一下:

  • 使用递归
  • 如果提供的参数(args)的数量足够,则调用传递的函数fn
  • 否则,使用function.prototype.bind()返回一个 curry 过的函数fn,该函数期望得到其余的参数。
  • 如果我们想要 curry 一个接受可变参数数量的函数(一个可变参数函数,例如Math.min()),我们可以选择将参数数量传递给第二个形参。

有点抽象,直接 看下示例:

curry(Math.pow)(2)(10); // 1024
curry(Math.min, 3)(10)(50)(2); // 2

看完示例可能更懵了,这是什么鬼?

首先,我们先看 curry(Math.pow)(2)(10)

执行 curry(Math.pow) ,代入进去得:

const curry = (Math

以上是关于10.curry 方法的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段10—— 数组的响应式方法

Android课程---Android Studio使用小技巧:提取方法代码片段

Sleep() 方法后的代码片段没有被执行

如何通过代码设置片段标签?

编写代码片段的更简洁的方法

简单的方法来分享/讨论/协作的代码片段?