一个函数
JavaScript发表于2017年08月01日10:23:25
0条评论 242次阅读
// 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条评论