關於函數柯里化的例子網上有很多,我自己分享一下自己的一些看法和總結
大家都學過數學,都應該記得下面這個熟悉的表達式
y=f(x);
沒錯,y是關於x的函數,當x確定的時候,y也就確定
再比如,z=f(x,y);
z是關於x,y的函數,當其中一個x或者y確定的時候,就會變成
z=f(x)或者z=f(y)這樣的關係
先寫一個簡單的柯里化的例子:
function curry(fn){
var args=Array.prototype.slice.call(arguments,1);
return function(){
var innerArgs=Array.prototype.slice.call(arguments);
var targetArgs=args.concat(innerArgs);
return fn.apply(null,targetArgs);
}
}
function add(x,y){
return x*y;
}
var res=curry(add,5);
res(6)//30
原先add只是一個普通的function,輸入一個變量x和一個變量y,返回兩數之積,這裏柯里化之後,傳入參數5,res變成了一個關於y的一個函數,所以執行res(6)就返回了30