摘要:函数柯里化就是创建已经设置单个参数或者多个参数的函数,函数变为接受一个参数,返回一个值

小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

定义

函数柯里化就是创建已经设置单个参数或者多个参数的函数,函数变为接受一个参数,返回一个值

来个例子

     function add(){          // 将传进来的实参转换为数组arr         var arr = Array.prototype.slice.call(arguments);         var mun = 0;          for (let i = 0; i < arr.length; i++) {             mun += arr[i];         }          // 返回传进来的实参之和         return mun;     }      function carrying(fn){         // 获取要复用的参数,除去第一个参数并转化为数组         var argsOut = Array.prototype.slice.call(arguments,1);          return function (){             // 取的自身的参数并转换为数组             var argsInner = Array.prototype.slice.call(arguments);              // 合并复用和自身的数组             var argsTotle = argsInner.concat(argsOut);              // 调用传进来的fn函数,并将数组元素,利用apply的特点依次传入fn             return fn.apply(null,argsTotle);         }     }      var a1 = carrying(add,4,6,7);  // 4,6,7 为复用参数     // 这里的a1为carrying函数中return出来的匿名函数      console.log(a1()); //17  这里自身参数没有      console.log(a1(2,3,45,66)) //133  这里2,3,45,66为自身参数      var a2 = carrying(add,1);      console.log(a2(4,2,3,4,66)) // 80

定义

函数柯里化就是创建已经设置单个参数或者多个参数的函数,函数变为接受一个参数,返回一个值

来个例子

     function add(){          // 将传进来的实参转换为数组arr         var arr = Array.prototype.slice.call(arguments);         var mun = 0;          for (let i = 0; i < arr.length; i++) {             mun += arr[i];         }          // 返回传进来的实参之和         return mun;     }      function carrying(fn){         // 获取要复用的参数,除去第一个参数并转化为数组         var argsOut = Array.prototype.slice.call(arguments,1);          return function (){             // 取的自身的参数并转换为数组             var argsInner = Array.prototype.slice.call(arguments);              // 合并复用和自身的数组             var argsTotle = argsInner.concat(argsOut);              // 调用传进来的fn函数,并将数组元素,利用apply的特点依次传入fn             return fn.apply(null,argsTotle);         }     }      var a1 = carrying(add,4,6,7);  // 4,6,7 为复用参数     // 这里的a1为carrying函数中return出来的匿名函数      console.log(a1()); //17  这里自身参数没有      console.log(a1(2,3,45,66)) //133  这里2,3,45,66为自身参数      var a2 = carrying(add,1);      console.log(a2(4,2,3,4,66)) // 80

觉得可用,就经常来吧!Javascript技巧 脚本宝典 欢迎评论哦! js技巧,巧夺天工,精雕玉琢。小宝典献丑了!

本文固定链接: http://www.js-code.com/js/js_1375.html