//定义一个数组专门存储所有的参数
var _args = Array.prototype.slice.call(arguments);
//在 内部声明一个函数,利用闭包的特性保存_args并收集所有的参值
var _adder = function () {
_args.push(...arguments);
return _adder;
}
//利用toStringy隐式转换的特性,当最后执行隐式转换,并计算最终的值返回
_adder.toString=function(){
return _args.reduce(function(a,b){
return a+b;
})
}
return _adder;
}
console.log(add(1)(2)(3))
add(1)(2)(3) // 6
add(1, 2, 3)(4) // 10
add(1)(2)(3)(4)(5) // 15
add(2, 6)(1) // 9
来源:CSDN
作者:@呵呵
链接:https://blog.csdn.net/weixin_41639609/article/details/103732915