JS函數柯里化

什麼是函數柯里化

柯里化一般也稱部份求值,其寄義是給函數分步通報參數,每次通報參數後部份運用參數,並返回一個更詳細的函數接收剩下的參數,這中心可嵌套多層如許的接收部份參數函數,直至返回末了效果。
因而柯里化的歷程是逐漸傳參,逐漸減少函數的適用範圍,逐漸求解的歷程。
個人理解為在函數傳實行時函數並不計算效果,而是返回一個新的函數,這個新的函數已內置了之前的參數,在須要計算效果時再返回效果。

柯里化完成

通用的柯里化函數

  var curry = function (fn) {
       //應用閉包來保留參數
       var _args = [];

       return function () {
           //假如參數為0返回計算效果
           if (arguments.length === 0) {
               return fn.apply(this, _args);
           }
           
           //否則將參數增加到_args中並返回當前函數
           [].push.apply(_args, arguments);
           return arguments.callee;
       }
   };

柯里化一個乞降函數

var add = curry(function () {
       return [].reduce.call(arguments, function (a, b) {
           return a + b;
       })
   });

 add(2, 4);
 add(4);
 add(2, 3, 45);  
 //此時函數並未實行加法運算,只是保留了增加的參數

 add();
 //這裏實行了加法運算,返回計算效果60
    原文作者:沒落的宅男貴族
    原文地址: https://segmentfault.com/a/1190000015315900
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞