随后调用多个括号的函数

loading...


0

在做一些JavaScript挑战时,我遇到了代码 add(1)(2) ,一个函数被调用后跟几个圆括号 . 挑战是 Build 一个 add 功能链 .

add(1)(2)(3);       // -> 6
add(1)(2)(3)(4);    // -> 10
add(1)(2)(3)(4)(5); // -> 15

此外,我们应该能够存储返回的值并重用它们 .

var addTwo = add(2);

addTwo;       // -> 2
addTwo + 5;   // -> 7
addTwo(3);    // -> 5
addTwo(3)(5); // -> 10

提前致谢 .

loading...

1回答

  • 0
    function sum(firstArg, opt_argsStack) {
        const argsStack = (opt_argsStack || []).concat([firstArg]);
    
        const nextSum = nextArg => sum(nextArg, argsStack);
        nextSum.valueOf = () => argsStack.reduce((a, b) => a + b);
        return nextSum;
        }
    
        console.log(+sum(1));
        console.log(+sum(1)(2));
        console.log(+sum(1)(2)(3));
        console.log(+sum(1)(2)(3)(4));
    

    在这里,我们将所有累积参数的堆栈传递给递归调用 . 并且在valueOf调用中,堆栈通过简化时间转换为数字 . 如果我们想将链式和改为链式乘法或其他任何东西,这给了我们更大的灵活性,我们只需插入不同的reduce函数 .

评论

暂时没有评论!