摘要:這是一道朋友在群里發的一道題,我之前不是很懂柯里化,就自己試著寫了一下,不知道算不算柯里化,望指教下面是題目寫好之后一下代碼可以正常運行輸入正確我自己的代碼我用到了以下知識點擴展運算符傳參和擴展運算符相關的數組操作。
這是一道朋友在群里發的一道題,我之前不是很懂柯里化,就自己試著寫了一下,不知道算不算柯里化,望指教~ 下面是題目:
function curry() { // your code..... } ================================ //寫好之后一下代碼可以正常運行輸入正確 function add(a, b, c) { return a + b + c; } let addEx = curry(add); console.log(addEx(1,2,3) === 6); console.log(addEx(1,2)(3) === 6); console.log(addEx(1)(2,3) ===6); console.log(addEx(1)(2)(3)===6); function multi(a, b, c, d) { return a * b * c * d } const multiEx = curry(multi) console.log(multiEx(2, 3, 4, 5) === 120) //=>true console.log(multiEx(2, 3, 4)(5) === 120) //=>true console.log(multiEx(2, 3)(4, 5) === 120) //=>true console.log(multiEx(2)(3)(4)(5) === 120) //=>true我自己的代碼:
function curry(fn) { let len = fn.length; let arr = []; let getCurry = function () { return function () { let next = [...arguments]; if (len !== arr.length + next.length) { arr.push(...next); return getCurry(); } else { let result = fn.apply(null, [...arr,...next]) arr = [] return result } } } return getCurry() }
我用到了以下知識點:
擴展運算符傳參和擴展運算符相關的數組操作。
由于是連環調用函數,我用所有調用函數的參數個數來判斷。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94467.html
摘要:忍者秘籍一書中,對于柯里化的定義如下在一個函數中首先填充幾個參數然后再返回一個新函數的技術稱為柯里化。回到我們的題目本身,其實根據測試用例我們可以發現,函數的要求就是接受單一函數,例如但是與柯里化不同之處在于,柯里化返回的一個新函數。 歡迎大家再一次來到我的文章專欄:從面試題中我們能學到什么,各位同行小伙伴是否已經開始了悠閑的春節假期呢?在這里提前祝大家雞年大吉吧~哈哈,之前有人說...
摘要:函數柯里化在函數式編程中,函數是一等公民。函數柯里化的主要作用和特點就是參數復用提前返回和延遲執行。可能在實際應用場景中,很少使用函數柯里化的解決方案,但是了解認識函數柯里化對自身的提升還是有幫助的。 最近在整理面試資源的時候,發現一道有意思的題目,所以就記錄下來。 題目 如何實現 multi(2)(3)(4)=24? 首先來分析下這道題,實現一個 multi 函數并依次傳入參數執行,...
摘要:函數柯里化關于函數柯里化的問題最初是在忍者秘籍中講閉包的部分中看到的,相信很多同學見過這樣一道和柯里化有關的面試題實現一個函數,使得如下斷言能夠能夠通過簡單說就是實現一個求值函數,能夠將所有參數相加得出結果。方法返回一個表示該對象的字符串。 函數柯里化 ??關于函數柯里化的問題最初是在《JavaScript忍者秘籍》中講閉包的部分中看到的,相信很多同學見過這樣一道和柯里化有關的面試題:...
摘要:原題如下寫一個方法,當使用下面的語法調用時,能正常工作這道題要考察的,就是對函數柯里化的理解。當參數只有一個的時候,進行柯里化的處理。這其實就是函數柯里化的簡單應用。 showImg(https://segmentfault.com/img/bVbopGm?w=620&h=350); 前言 這是前端面試題系列的第 6 篇,你可能錯過了前面的篇章,可以在這里找到: ES6 中箭頭函數的...
閱讀 1213·2021-09-03 10:44
閱讀 614·2019-08-30 13:13
閱讀 2804·2019-08-30 13:11
閱讀 1974·2019-08-30 12:59
閱讀 1041·2019-08-29 15:32
閱讀 1603·2019-08-29 15:25
閱讀 999·2019-08-29 12:24
閱讀 1288·2019-08-27 10:58