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 方法的主要内容,如果未能解决你的问题,请参考以下文章