溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現(xiàn)Js函數(shù)curry化

發(fā)布時間:2021-11-12 09:44:20 來源:億速云 閱讀:123 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“怎么實現(xiàn)Js函數(shù)curry化”,在日常操作中,相信很多人在怎么實現(xiàn)Js函數(shù)curry化問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么實現(xiàn)Js函數(shù)curry化”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

  關(guān)于函數(shù)curry化,其實就類似與鏈式調(diào)用的思想,通過不斷返回函數(shù),使得可以執(zhí)行多個'(...args)',在適當?shù)臅r候返回結(jié)果

  函數(shù)curry化的實現(xiàn):

  泛化的curry化

  letsum=function(){

  vartotal=0;

  for(leti=0,c;c=arguments[i++];){

  total+=c;

  }

  returntotal;

  };

  letcurry=(fn)=>{

  letargs=[];

  //不用callee這個屬性,而是直接使用函數(shù)名字來調(diào)用

  returnfunctionnext(){

  if(arguments.length===0){

  returnfn.apply(this,args);

  }

  //curry化之后的函數(shù)使用方式是,不斷收集參數(shù),認為參數(shù)收集完畢之后就進行一次無參調(diào)用進行最后的計算。

  //所以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);

  }

到此,關(guān)于“怎么實現(xiàn)Js函數(shù)curry化”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

js
AI