關於函數柯里化的一些理解

關於函數柯里化的例子網上有很多,我自己分享一下自己的一些看法和總結

大家都學過數學,都應該記得下面這個熟悉的表達式
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章