js函數(shù)柯里化的方法和作用實(shí)例分析
本文實(shí)例講述了js函數(shù)柯里化的方法和作用。分享給大家供大家參考,具體如下:
函數(shù)柯里化的方法:
1,利用數(shù)組的reduce方法可實(shí)現(xià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)文章
array.prototype.silce.call 理解分析
在很多框架中與遇到這個(gè)方法,但一時(shí)沒去研究這個(gè)方法,只要前段時(shí)間被問到,尷尬無奈收?qǐng)觥K詫W(xué)習(xí)就要追根究底的精神,廢話少說,說正題。2010-04-04javascript實(shí)現(xiàn)在某個(gè)元素上阻止鼠標(biāo)右鍵事件的方法和實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)在某個(gè)元素上阻止鼠標(biāo)右鍵事件的方法和實(shí)例,需要的朋友可以參考下2014-08-08JavaScript數(shù)據(jù)類型區(qū)別及檢測(cè)方法
在JavaScript中,數(shù)據(jù)類型是編程中非常重要的概念,它決定了數(shù)據(jù)的性質(zhì)、如何存儲(chǔ)以及如何操作這些數(shù)據(jù),本文介紹JavaScript數(shù)據(jù)類型區(qū)別及檢測(cè)方法,感興趣的朋友一起看看吧2024-04-04Javascript類型系統(tǒng)之String字符串類型詳解
這篇文章主要介紹了Javascript類型系統(tǒng)之String字符串類型詳解的相關(guān)資料,需要的朋友可以參考下2016-06-06ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單講解
大家心里是否產(chǎn)生過這樣的疑問,JS中既然已經(jīng)有對(duì)象這種數(shù)據(jù)結(jié)構(gòu),我們?yōu)槭裁催€要再單獨(dú)去使用Set或者M(jìn)ap呢?下面這篇文章主要給大家介紹了關(guān)于ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-08-08JavaScript隊(duì)列、優(yōu)先隊(duì)列與循環(huán)隊(duì)列
這篇文章主要為大家詳細(xì)介紹了JavaScript隊(duì)列、優(yōu)先隊(duì)列與循環(huán)隊(duì)列的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Threejs與Tween.js結(jié)合創(chuàng)建動(dòng)畫的詳細(xì)圖文教程
three.js和tween.js可以一起使用,實(shí)現(xiàn)復(fù)雜的動(dòng)畫效果,包括飛線動(dòng)畫,這篇文章主要給大家介紹了關(guān)于Threejs與Tween.js結(jié)合創(chuàng)建動(dòng)畫的相關(guān)資料,需要的朋友可以參考下2024-01-01