前端使用柯里化的用途主要就是簡化**結構,提高系統的維護性,乙個方法,只有乙個引數,強制了功能的單一性,很自然就做到了功能內聚,降低耦合。
降低**的重複,提高**的適用性。 (在後面實現應用部分 ajax 會體現出來呼叫時的**精簡)
呼叫形式
function add(a,b,c,d);
var newadd = curry(add); //將add函式柯里化 經過柯理化返回乙個新的函式
//柯里化之後的newadd函式執行方式,傳入剩餘的引數。
newadd(1)(2)(3)(4);
newadd(1,2)(3,4);
newadd(1,2,3)(4);
newadd(1,2,3,4);
newadd(1)(2,3,4);
newadd(1)(2,3)(4);
函式柯理化的準備
//柯里化就是期望下一次能夠把所有的引數傳入完畢。
function fixedparamscurry(fn)
}
var newadd = fixedparamscurry(add,1); //傳入引數。這裡是傳入了1個引數
console.log(newadd(2,3,4)); //此處必須要將剩餘的引數填滿。這裡將剩餘的3個引數傳入。(期望這一次把引數全部傳入完畢)
柯理化的具體實現
期待下一次將引數補齊
function curry(fn, length)else
}}
//此處ajax只是示意而已
//post www.test1.com 'name=djl&age=22'
//post www.test1.com 'key=111'
//post www.test2.com 'name=djl&age=22'
//post www.test2.com 'key=222'
function ajax(method, url, data)
//場景:引數的**重複性太高,每次都要寫重複的引數
ajax('post', 'www.test1.com', 'name=djl&age=22');
ajax('post', 'www.test1.com', 'key=111');
ajax('post', 'www.test2.com', 'name=djl&age=22');
ajax('post', 'www.test2.com', 'key=222');
//使用柯里化簡化**:針對『post』的引數傳入省略
var ajaxcurry = curry(ajax);
var postajax = ajaxcurry('post');
postajax('www.test1.com', 'name=djl&age=22');
postajax('www.test2.com', 'name=djl&age=22');
//還可以再繼續細分,針對網域名稱『www.test1.com』省略引數
var test1postajax = curry(postajax);
test1postajax('name=djl&age=22');
test1postajax('key=111');
函式柯里化 curry
一 函式柯里化的特性 1 引數復用 ajax 示例一 function ajax type,url,data var ajaxcurry curry ajax 以get請求為例 示例二 function add a,b,c const curryadd function a console.log ...
函式柯里化(curry)
我們依舊從需求入手,只有知道我們要幹嘛,才能一步步引導我們堆砌出萬丈高樓。先看下面的 function add x,y console.log add 3,1 4如果我們想這樣執行add 3 1 也能輸出4,我們該怎麼做.我們從這個函式呼叫可以知道,函式呼叫了兩次,並且呼叫第一次後返回的是函式才能再...
函式柯里化 curry
1 函式程式設計中,接受多個引數的函式都可以轉化為接受單個引數的函式,這個轉化過程就叫柯里 化 2 柯里化就是證明了函式只需要乙個引數而已。其實我們剛才的學習過程中,已經涉及到了柯里 化操作。3 不用設立柯里化存在的意義這樣的命題。柯里化就是以函式為主體這種思想發展的必然產生的 結果。即 柯里化是面...