首页 > 其他 > 详细

函数柯里化

时间:2019-11-26 13:50:27      阅读:70      评论:0      收藏:0      [点我收藏+]
// var cost = (function () {
//   var args = [];
//   return function () {
//     if (arguments.length === 0) {
//       var money = 0;
//       for (var i = 0, l = args.length; i < l; i++) {
//         money += args[i]
//       }
//       return money;
//     }
//     else { 
//       Array.prototype.push.apply(args, arguments)
//     }
//   }
// })()
// cost(200)
//这个只要用于保存参数,或者判断是否需要进行一次性求值
var curring = function (fn) {
  var arg = [];
  return function () {
    if (arguments.length === 0) {
      return arg
    }
    else {
      [].push.apply(arg, arguments);
      return arguments.callee
    }
  }
};
var cost = (function () {
  var money = 0; 
  return function () {
    for (var i = 0, l = arguments.length; i < l; i++) {
      money += arguments[i]
    }
    return money
  }
}
)();
var cost = curring(cost);
cost(300);

  

Function.prototype.uncurrying = function () {
  console.log(this)//谁调用指向谁
  var self = this;
  return function () {
    var obj = Array.prototype.shift.call(arguments);//对象
    return self.apply(obj, arguments)//数组
  }
};
var push = Array.prototype.push.uncurrying();

(function () {
  push(arguments, 4);
  console.log(arguments,‘arguments‘);
})(1, 2, 3)

  

函数柯里化

原文:https://www.cnblogs.com/Ewarm/p/11928939.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!