js函數(shù)柯里化的方法和作用實(shí)例分析
本文實(shí)例講述了js函數(shù)柯里化的方法和作用。分享給大家供大家參考,具體如下:
函數(shù)柯里化的方法:
1,利用數(shù)組的reduce方法可實(shí)現(xiàn)柯里化,具體參見(jiàn)我的另外一篇文章
2,代碼如下
const curry = (fn, ...args) =>{ console.log(’args’,args) // console.log(fn.length,args.length) return args.length < fn.length // 參數(shù)長(zhǎng)度不足時(shí),重新柯里化該函數(shù),等待接受新參數(shù) ? (...arguments) => { console.log(’arguments’,arguments) return curry(fn, ...args, ...arguments) } // 參數(shù)長(zhǎng)度滿足時(shí),執(zhí)行函數(shù) : fn(...args);}function sumFn(a, b, c) { return a + b + c;}var sum = curry(sumFn); const one = sum(2)console.log(’one:’,one.toString())const two = one(3)console.log(’two:’,two.toString())const three = two(5)console.log(’three:’,three.toString()) //console.log(sum(2)(3)(5));//10// console.log(sum(2, 3, 5));//10// console.log(sum(2)(3, 5));//10// console.log(sum(2, 3)(5));//10
函數(shù)柯里化的主要作用:
參數(shù)復(fù)用。 提前返回 ? 返回 接受余下的參數(shù) 且返回結(jié)果 的 新函數(shù)。 延遲執(zhí)行 ? 返回新函數(shù),等待執(zhí)行。感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章:
1. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)2. XHTML 1.0:標(biāo)記新的開(kāi)端3. HTML5 Canvas繪制圖形從入門到精通4. XML解析錯(cuò)誤:未組織好 的解決辦法5. ASP基礎(chǔ)知識(shí)VBScript基本元素講解6. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼7. 詳解CSS偽元素的妙用單標(biāo)簽之美8. 利用CSS3新特性創(chuàng)建透明邊框三角9. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁(yè)的方法10. XML入門的常見(jiàn)問(wèn)題(四)
