用js实现函数f1,f返回每次调用拿书列表和之积,集中函数f可以不限次数调用,每次调用的参数个数不定。f(1,2)(3)(4,5,6) = (1+2)*3*(4+5+6) 返回和之积
javascript
// 约定不传参数时 获取乘积结果
const f1 = (...args) => {
if (args.length === 0) {
if (!f1.ands) {
return 0;
}
return f1.ands.reduce((p, c) => p * c, 1);
}
!f1.ands && (f1.ands = []);
f1.ands.push(args.reduce((p, c) => p + c, 0));
return f1;
}
console.log(f1(1,2)(2)(3,4)());
<script type="text/javascript">
function foo(args) {
if (arguments.length > 0) {
var sum = 1;
for (var i = 0; i < arguments.length; i++) {
var sum1 = 0;
for (var j = 0; j < arguments[i].length; j++) {
sum1 = sum1 + arguments[i][j];
}
sum = sum * sum1;
}
return sum;
}
else {
return 1;
}
}
var r = foo([1, 2],[3],[4, 5, 6]);
alert(r);
</script>
function f() {
var s = 0;
for (var i = 0; i < arguments.length; i++) {
s += arguments[i];
}
if (this.upData) {
s *= this.upData;
}
var nf = f.bind({upData:s});
nf.valueOf = nf.toString = function () {
return s;
}
return nf;
}
alert( f(1,2)(3)(4,5,6) );
function f(...arg0) {
var result = (...arg1) => f(arg0.reduce((x,s)=>x+s)*arg1.reduce((x,s)=>x+s));
result.valueOf = () => arg0.reduce((x,s)=>x+s);
return result
}
console.log(f(1,2)(3)(4,5,6)+0)