最简单的问题是编写一个可以返回所有参数之和的函数。我怎样才能做到这一点?
function add () {
}
add(1)(2)(3)(); //6
add(5)(6)(7)(8)(9)() //35
最佳答案
我认为这正是您所需要的:
function add(value) {
return (val) => val !== undefined ? add(value + val) : value;
}
console.log(add(2)(2)()); //4
console.log(add(2)(2)(5)(5)()); //14
console.log(add(1)(1)(1)(1)(1)()); //5
console.log(add(1)(1)(0)(1)(1)()); //4
工作原理
对于每次调用,它都会在内部声明一个函数,结果会在每次调用中创建一个闭包(持久作用域)。由于存在闭包,以这种方式创建的函数可以访问其参数+先前的调用参数。
因此,如果我调用 add(2)(3)():
- add(2) - 返回具有可见 2 值的函数
- add(2)(3) - 使用输入 2 + 3 调用第二个函数,并返回可见值等于 5 的第三个函数
- add(2)(3)() - 由于参数为空而结束计算并返回值
要完成计算管道,最后一次调用需要没有值。
关于JavaScript 添加函数,调用次数不限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47339261/