bfe.dev 是一个针对前端的刷题网站,像是前端的LeetCode。该系列文章是我在上面的刷题日记。前端
实现curry() bigfrontend.dev/problem/imp…app
比较基础的题目了。首先看一下examplefrontend
const curriedJoin = curry(join) curriedJoin(1, 2, 3) // '1_2_3' curriedJoin(1)(2, 3) // '1_2_3' 复制代码
也就是说 curry()
须要返回一个function,这个function接受任意数量的参数,而且网站
1. 若是参数够了,就执行原本的functionthis
2. 若是参数不够,就”保存”下参数,返回一个新的function。 这个function含有“保存”好的参数。这个能够经过 Function.prototype.bind
来实现。spa
这个题目比较简单,直接放上代码。prototype
function curry(func) { return function curried(...args) { // 1\. if enough args, call func // 2\. if not enough, bind the args and wait for new one if (args.length >= func.length) { return func.apply(this, args) } else { return curried.bind(this, ...args) } } } 复制代码
注意 curried.bind(this, ...args) 的实现。code
顺利passrem
这个题目比较简单了。有兴趣能够去 bfe.dev上试一试。get
与此题相关的第二题就没这么简单了,敬请期待下一篇文章,感谢阅读 ?