文享日志

一个函数

JavaScript

发表于2017年08月01日10:23:25

0条评论 167次阅读

// add 函数柯里化
function add(){
    //建立args,利用闭包特性,不断保存arguments
    var args = [].slice.call(arguments);
    var ha = [11,22,33];
    [].push.apply(ha,arguments);
    ha.push(arguments);
    	console.log(ha);
       //方法一,新建_add函数实现柯里化
    var _add = function(){
        if(arguments.length === 0){
            //参数为空,对args执行加法
            return args.reduce(function(a,b){return a+b});
        }else {
            //否则,保存参数到args,返回一个函数
            [].push.apply(args,arguments);
            return _add;
        }
    }
    //返回_add函数
    return _add;

    // //方法二,使用arguments.callee实现柯里化
    // return function () {
  //       if (arguments.length === 0) {
  //           return args.reduce(function(a,b){return a+b});
  //       }
  //       Array.prototype.push.apply(args, arguments);
  //       return arguments.callee;
  //   }
}
console.log(add(1,2,3)(1)(2)(3)(4,5,6)(7,8)());


注:

数组的reduce是归并函数。

apply方法第二个参数是数组或者arguments对象。

👍 0  👎 0
共有0条评论

发表新评论

提交

广告展示

腾讯云推广 阿里云推广