這篇文章主要介紹“怎么實現(xiàn)Js函數(shù)curry化”,在日常操作中,相信很多人在怎么實現(xiàn)Js函數(shù)curry化問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么實現(xiàn)Js函數(shù)curry化”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
為企業(yè)提供成都網站制作、網站建設、網站優(yōu)化、成都全網營銷推廣、競價托管、品牌運營等營銷獲客服務。創(chuàng)新互聯(lián)公司擁有網絡營銷運營團隊,以豐富的互聯(lián)網營銷經驗助力企業(yè)精準獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術實力解決了企業(yè)“網站建設、網絡品牌塑造、網絡營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉化率,獲得了眾多企業(yè)客戶的高度認可!關于函數(shù)curry化,其實就類似與鏈式調用的思想,通過不斷返回函數(shù),使得可以執(zhí)行多個'(...args)',在適當?shù)臅r候返回結果
函數(shù)curry化的實現(xiàn):
泛化的curry化
letsum=function(){
vartotal=0;
for(leti=0,c;c=arguments[i++];){
total+=c;
}
returntotal;
};
letcurry=(fn)=>{
letargs=[];
//不用callee這個屬性,而是直接使用函數(shù)名字來調用
returnfunctionnext(){
if(arguments.length===0){
returnfn.apply(this,args);
}
//curry化之后的函數(shù)使用方式是,不斷收集參數(shù),認為參數(shù)收集完畢之后就進行一次無參調用進行最后的計算。
//所以curry化在這里的作用其實就是收集參數(shù),當然不同的curry函數(shù)可以達到不同的效果
args=[...args,...arguments];
//returnarguments.callee;
returnnext;
}
}
letsum_curry1=curry(sum);
sum_curry1(1)(2,3);
sum_curry1(4);
console.log(sum_curry1());
curry化的作用
提高適用性
【通用函數(shù)】解決了兼容性問題,但同時也會再來,使用的不便利性,不同的應用場景往,要傳遞很多參數(shù),以達到解決特定問題的目的。有時候應用中,同一種規(guī)則可能會反復使用,這就可能會造成代碼的重復性。
看下面一個例子:
functionsquare(i){
returni*i;
}
functiondubble(i){
returni*=2;
}
functionmap(handeler,list){
returnlist.map(handeler);
}
到此,關于“怎么實現(xiàn)Js函數(shù)curry化”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
名稱欄目:怎么實現(xiàn)Js函數(shù)curry化-創(chuàng)新互聯(lián)
本文路徑:http://weahome.cn/article/djipoe.html