標籤:

不可或缺的柯里化

curry的概念:只傳遞給函數部分參數,調用它之後返回一個函數去處理剩下的參數;

var add = function (x) {n return = function (y) {n return x+y;n };n};nnvar addTen = add(10);nnaddTen(2);//12n

柯里化在生產中的應用,通常會遵循一種簡單,同時也非常重要的模式。即策略性的把要操作的數據放到最後一個參數里。

var curry = require(lodash).curry;nnvar match = curry(function (what, str){n return str.match(what);n});nnmatch(/s+/g)(hello world);n

運用了loads的curry方法來把一般的函數變成柯里化,基本思路是收集該函數的參數知道最後一個參數收集完才執行。

這裡表明curry的一種「預載入」的函數能力,通過傳遞一到兩個參數調用函數,就能得到一個記住這些參數的新函數。

例子:用map簡單的吧參數是單個元素的函數包裹成轉換參數為數組的函數

var map = curry(function (f, ary) {n return ary.map(f);n});nnvar child = function(x){n return = x.child;n};nvar all = map(child);n//nnall(a,b,c);//[a,b,c]n

推薦閱讀:

我寫了本書《深入淺出React和Redux》
[貝聊科技] 一個炫酷大屏展示頁的打造過程

TAG:前端开发 |