JavaScript 添加函数,调用次数不限

标签 javascript

最简单的问题是编写一个可以返回所有参数之和的函数。我怎样才能做到这一点?

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/

相关文章:

javascript - 如何在 JS 中更改背景图片属性

javascript - MVC.Grid : how to call @Html. 使用jquery的AjaxGrid

javascript - 隐藏galleryView插件而不刷新

PHP Var 到外部 JS——没有全局、Ajax 或 Eval

javascript - 如何在输入末尾添加文本以及如何删除输入类型数字的默认向上和向下?

javascript - 使用setInterval()函数制作番茄钟定时器

javascript - 按键保持延迟。 JavaScript

javascript - 我可以在 Javascript 中使用变量进行 'if' 查询吗?

javascript - 为什么加载时会以 Angular 方式调用工厂 3 次?

javascript - Playframework Comet 套接字在客户端捕获断开连接