函式柯里化 curry

2021-09-07 18:44:57 字數 1431 閱讀 3068

一、函式柯里化的特性:

(1)引數復用 $.ajax

// 示例一

function ajax(type,url,data)

var ajaxcurry = curry(ajax);

// 以get請求為例

// 示例二

function add(a,b,c)

const curryadd = function(a)

}}console.log(add(5,10,15)); // 結果30

const add5 = curryadd(5); // 固定第乙個引數。讓表示式已經具有了乙個引數5,向外暴露add5

console.log(add5(10)(15)); // 30

(2)提前返回 onclick... addeventlistener()

// 示例一

var addevent = function(el, type, fn, capture),capture);

}else if(window.attachevent))

}}addevent(a,'click',handleclick,true);

addevent(a,'click',handleclick,true);

addevent(a,'click',handleclick,true);

// 示例二(優化版)

var addevent = (function(),capture);

}}else if(window.attachevent))

}}})() // 自執行函式(閉包)

(3)延遲執行 -> 不定引數

// 使用柯里化可以將函式的引數積累起來到某個觸發點時再進行引數的執行

var totalscore = 0;

// 柯里化

var curryscore = function(fn)else

}}var curryaddscore = curryscore(function()

if(_args.length < length)else

}}function add(a,b,c)

var curryadd = curry(add);

console.log(curryadd(5)(10)(15)); // 30

console.log(curryadd(5,10)(15)); // 30

console.log(curryadd(5,10,15)); // 30

var curryadd5 = curryadd(5);

console.log(curryadd5(10,15)); // 30

函式柯里化(curry)

我們依舊從需求入手,只有知道我們要幹嘛,才能一步步引導我們堆砌出萬丈高樓。先看下面的 function add x,y console.log add 3,1 4如果我們想這樣執行add 3 1 也能輸出4,我們該怎麼做.我們從這個函式呼叫可以知道,函式呼叫了兩次,並且呼叫第一次後返回的是函式才能再...

函式柯里化 curry

1 函式程式設計中,接受多個引數的函式都可以轉化為接受單個引數的函式,這個轉化過程就叫柯里 化 2 柯里化就是證明了函式只需要乙個引數而已。其實我們剛才的學習過程中,已經涉及到了柯里 化操作。3 不用設立柯里化存在的意義這樣的命題。柯里化就是以函式為主體這種思想發展的必然產生的 結果。即 柯里化是面...

函式柯里化 curry

一 函式柯里化的特性 1 引數復用 ajax 示例一 function ajax type,url,data var ajaxcurry curry ajax 以get請求為例 示例二 function add a,b,c const curryadd function a console.log ...