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
與此題相關的第二題就沒這麼簡單了,敬請期待下一篇文章,感謝閱讀 ?