javascript中的尾部函数[重复]

2024-01-22

我想创建一个添加参数的函数。调用这个函数应该是

functionAdd(2)(3)(4)...(n);

结果 2+3+4...+n 我正在尝试这个

function myfunction(num){
  var summ =+ num;
  if(num !== undefined){
    return myfunction(summ);
  }

};

但它不起作用,overwerflow错误。我不明白我应该从这个函数中摆脱出来;


您可以使用.valueOf做到这一点:

function myfunction(sum){
    var accum = function(val) {
        sum += val;

        return accum;
    };

    accum.valueOf = function() {
        return sum;
    };

    return accum(0);
};

var total = myfunction(1)(2)(3)(4);

console.log(total); // 10

JSFiddle:http://jsfiddle.net/vdkwhxrL/ http://jsfiddle.net/vdkwhxrL/

怎么运行的:

在每次迭代中,您都会返回对累加器函数的引用。但是当你请求结果时 -.valueOf() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf被调用,它返回一个标量值。

请注意,结果仍然是一个函数。最重要的是,这意味着它不会在分配时被复制:

var copy = total
var trueCopy = +total   // explicit conversion to number

console.log(copy)       // 10 ; so far so good
console.log(typeof copy)  // function
console.log(trueCopy)   // 10
console.log(typeof trueCopy)  // number

console.log(total(5))   // 15

console.log(copy)       // 15 too!
console.log(trueCopy)   // 10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript中的尾部函数[重复] 的相关文章

随机推荐

  • ReLU 没有学习处理负输入 Keras / Tensorflow

    我希望我的神经网络将负值转换为正值 理论上 这可以使用 ReLU 函数和 1 个节点来完成 该节点将输入权重学习为 1 因此负输入乘以 1 正输入 它只是继续输出 0 代码如下 我使用 1 作为输入值 看看它是否可以至少在单个输入上进行学习
  • 更改我的项目文件不会更改 Docker 计算机内的文件

    我正在尝试使用 Docker 来改进我的工作流程 我安装了 适用于 Windows 的 Docker 工具箱 https docs docker com engine getstarted step one 在我的 Windows 10 家
  • 在Python中,可以在不使用继承的情况下实现mixin行为吗?

    Python 中是否有一种合理的方法来实现类似于 Ruby 中的 mixin 行为 即不使用继承 class Mixin object def b self print b def c self print c class Foo obje
  • JavaPlot 和 gnuplot

    我正在拼命地努力让 Java 和 gnuplot 更好地发挥作用 我已经开始使用JavaPlot并将 jar 添加到类路径 使用 Eclipse 我还下载了 gnuplot 并将其放在安全的地方 第一个问题 所有例子都由JavaPlot假设
  • boost::filesystem::directory_iterator 是否因删除而失效?

    我正在遍历一个目录 当某个项目符合某些条件时 我将其删除 我可以在循环内安全地执行此操作 还是必须将路径保存在数组中并稍后删除 我没有找到相关信息boost 文件系统文档 http www boost org doc libs 1 52 0
  • PDFBox IOException:文件结尾,预期行

    我目前正在尝试使用 PDFBox 和 Selenium 从已上传并通过链接访问的 PDF 中获取文本 我用这个作为来源 http www seleniumeasy com selenium tutorials how to extract
  • 如何在 Firefox DevTools 中编辑或删除 cookie?

    在 Firebug 中 我可以使用以下命令删除和编辑任何 cookieCookies panel 但在 Firefox DevTools 中我找不到任何删除或编辑 cookie 的方法 我可以在哪里做到这一点 要在 Firefox DevT
  • bash“read -a”在空分隔字符串变量上循环

    我一直在阅读这篇文章 bash for in 在空分隔字符串变量上循环 https stackoverflow com questions 8677546 bash for in looping on null delimited stri
  • 单元测试cherpy web应用程序

    我最近不得不重写我们的 REST API 并从 Flask 切换到 Cherrypy 主要是由于 Python 3 兼容性 但现在我一直在尝试编写单元测试 Flask 有一个非常漂亮的内置测试客户端 您可以使用它向您的应用程序发送虚假请求
  • 未将对象引用设置为对象的实例 #5

    sUsername Trim sPassword Trim string ConnectionString WebConfigurationManager ConnectionStrings dbnameConnectionString C
  • 如何编写Delphi编译时函数

    Delphi 我可以自己写吗compile time functions对于 const 和 var 声明 在编译时可执行 标准 Delphi 库包含 Ord Chr Trunc Round High 等例程 用于常量初始化 我可以编写自己
  • 如何获取 Android 应用程序的 Google Places API 密钥

    在过去的 48 小时里 我绞尽脑汁试图找到这个问题的答案 问这个问题的人 如何为 Google Places api 制作 API KEY https stackoverflow com questions 23128152 how can
  • 通知的 PendingIntent 不要第二次调用我的活动

    我希望接收推送通知 c2dm 接收显示Notification 此通知以 PendingIntent 启动 这是一个显示弹出窗口的活动 单击 确定 按钮时 此弹出窗口将启动我的应用程序 这是在接收推送通知时执行的代码 private voi
  • Groovy list.sort 按第一个、第二个然后第三个元素

    我有一个很棒的列表 即 list 2 0 1 1 5 2 1 0 3 我想按第一个元素的顺序对其进行排序 然后是第二个元素 然后是第三个元素 Expected assert list 1 0 3 1 5 2 2 0 1 我开始于list l
  • gem 安装 memcached 失败

    关于做 gem install memcached 抛出以下错误 checking for pod2man usr bin pod2man configure line 22468 syntax error near unexpected
  • 转向 SVG 图标 - 如何将它们与代码分开?

    与字体图标相比 SVG 图标具有一些优势 它们可以缩放以适应可变大小的容器元素 并且理论上您可以更改各个路径的颜色 我还喜欢这样一个事实 我可以轻松地在 Inkscape 中制作它们 P 但是 如何在 CSS 文件中移动 SVG 以便可以在
  • 防止 go build 覆盖 go.mod 中的版本

    我有一个导入项目 foo 的 go 模块 foo 的最新标签显示 v1 4 当我做一个go build在我的项目中 它更新了 go mod 来表示 module github com myid mymod require github co
  • JasperReports 中的 PAGE_COUNT 未正确呈现...?

    我已经添加了页脚第 x 页 共 y 页 我的报告 但 PAGE COUNT 似乎不起作用 也许出现这个问题是因为我有很多子报表 I get Page 1 of 1 Page 2 of 0 Page 3 of 0 Page 4 of 0 有任
  • MySQL:两个时间戳之间的差异(以秒为单位)?

    是否可以计算MySQL中两个时间戳之间的差异并以秒为单位获得输出结果 Like 2010 11 29 13 16 55 2010 11 29 13 13 55应该给 180 秒 谢谢 我不认为接受的答案是一个好的通用解决方案 这是因为 UN
  • javascript中的尾部函数[重复]

    这个问题在这里已经有答案了 我想创建一个添加参数的函数 调用这个函数应该是 functionAdd 2 3 4 n 结果 2 3 4 n 我正在尝试这个 function myfunction num var summ num if num